CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

一个困扰我很久的问题,如何用PictureBox模仿TextBox,分不是问题。

楼主junwhj(http://www.grid2000.com/cn)2003-08-01 09:51:46 在 VB / API 提问

相关帖子:  
  http://expert.csdn.net/Expert/topic/1790/1790257.xml?temp=.61607  
   
  主要是解决PictureBox中输入中文时输入法会自动关闭的问题,我想实现的最终目标是在PictureBox上画表格,可以输入文字。 问题点数:200、回复次数:15Top

1 楼suntt(两条腿的狗)回复于 2003-08-01 14:47:54 得分 0

帮你upTop

2 楼victorycyz(--)回复于 2003-08-01 15:03:35 得分 0

输入法会自动关闭?  
  不会吧。检查该picturebox控件的imemode属性的值,不要设成关闭或disable。Top

3 楼gpo2002(永吹不休)回复于 2003-08-01 15:13:27 得分 0

学习Top

4 楼pandengzhe(无为之为 之 混迹苍生)回复于 2003-08-01 15:19:54 得分 0

不清楚,道理上讲应该没问题。况且输入法的打开关闭都可以控制的Top

5 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-01 15:21:00 得分 0

也不算自动关闭,当窗体中只有一个PictureBox,没有其它控件时,打不开输入法,不能显示输入法窗口。Top

6 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-01 15:22:00 得分 0

也不算自动关闭,当窗体中只有一个PictureBox,没有其它控件时,打不开输入法,不能显示输入法窗口。Top

7 楼luckygjl(gg2003)回复于 2003-08-01 15:29:39 得分 0

我解决的方法是在PictureBox上放一个隐藏的TextBox,条件转变时把Textbox中的文字输出到PictureBox上,虽然有些麻烦,但是用起来感觉不到TextBox的存在Top

8 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-01 16:22:47 得分 0

这样不好。Top

9 楼fwinfwin(彩虹沙漠随风飘飘)回复于 2003-08-01 22:04:51 得分 0

就是和dbgrid中使用textbox一样的用法,为什么不好?Top

10 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-02 08:24:47 得分 0

请您看一看我做的表格控件,现在正是用了浮动TextBox控件来收入文字的,现在的问题是要解决在PictureBox直接打开输入法,实现IME级别3。  
   
  其实任何窗口都可以实现这个功能的,不管是TextBox,还是其它控件。MS在.net中提供了一个示例,是C++写的,我正在研究。Top

11 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-02 08:25:15 得分 0

表格控件的主页:  
   
  http://junwhj.myrice.comTop

12 楼nik_Amis(...)回复于 2003-08-02 09:01:32 得分 0

upTop

13 楼GetWindowPos(阿汪)回复于 2003-08-03 10:24:13 得分 0

做完XP风格菜单的菜单编辑器后,我的强项就成了作弊,这方面的问题我是经验丰富  
   
  先将TEXTBOX的立体效果去掉,边框去掉,背景色设成与PICTURE   BOX一样,做完这些以后,可以看出TEXTBOX与LABEL的样子无异,这下偷天换日的方法就可以实现了  
   
  Private   Declare   Function   BitBlt   Lib   "gdi32"   (ByVal   hDestDC   As   Long,   ByVal   x   As   Long,   ByVal   y   As   Long,   ByVal   nWidth   As   Long,   ByVal   nHeight   As   Long,   ByVal   hSrcDC   As   Long,   ByVal   xSrc   As   Long,   ByVal   ySrc   As   Long,   ByVal   dwRop   As   Long)   As   Long  
  Private   Declare   Function   GetDC   Lib   "user32"   (ByVal   hwnd   As   Long)   As   Long  
   
  Private   Sub   Text1_Change()  
    lDC   =   GetDC(Text1.hwnd)      
    BitBlt   Picture1.hDC,   0,   0,   Text1.Width,   Text1.Height,   lDC,   0,   0,   vbSrcCopy   '将TEXT   控件画面绘制到PICTURE   控件  
  End   Sub  
   
  当你在TEXT   BOX里打字时,PICTUREBOX上一字不差显示出来,最巧的是,连光标也绘上去了,至于TEXTBOX的位置当然要放到别人看不见的地方,但别忘了要注意让TEXT获得焦点  
   
  没有把握的话Text1.ZOrder方法Top

14 楼GetWindowPos(阿汪)回复于 2003-08-03 10:26:56 得分 0

记得把TEXT   BOX   和PICTURE   BOX的大小设成一样  
  不用我啰嗦了吧Top

15 楼junwhj(http://www.grid2000.com/cn)回复于 2003-08-03 11:47:19 得分 0

To   GetWindowPos(阿汪):  
   
  你写得很好,可这还不是我想要的效果,我只想在PictureBox打开输入法窗口!我做的一个表格控件,在PictureBox获得焦点时,输入法窗口就自动被隐藏了,感觉有些不便。  
   
  Top

16 楼bbe()回复于 2003-08-05 12:04:42 得分 200

IME输入窗口显示问题:   因为PictureBox对WM_IME_SETCONTEXT进行了处理,用DefWindowProc返回即可。  
   
  Option   Explicit  
   
  Public   Const   WM_IME_SETCONTEXT   =   &H281  
  Public   Declare   Function   DefWindowProc   Lib   "user32"   Alias   "DefWindowProcA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
  Declare   Function   SetWindowLong   Lib   "user32"   Alias   "SetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long,   ByVal   dwNewLong   As   Long)   As   Long  
  Declare   Function   CallWindowProc   Lib   "user32"   Alias   "CallWindowProcA"   (ByVal   lpPrevWndFunc   As   Long,   ByVal   hwnd   As   Long,   ByVal   Msg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
  Public   Const   GWL_WNDPROC   =   (-4)  
   
  Dim   hPrevProc   As   Long  
   
  Public   Sub   SubClass(hHwnd   As   Long)  
          hPrevProc   =   SetWindowLong(hHwnd,   GWL_WNDPROC,   AddressOf   WindowProc)  
  End   Sub  
   
  Public   Sub   UnSubClass(hHwnd   As   Long)  
          SetWindowLong   hHwnd,   GWL_WNDPROC,   hPrevProc  
  End   Sub  
   
  Public   Function   WindowProc(ByVal   hwnd   As   Long,   ByVal   uMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
           
          Select   Case   uMsg  
                  Case   WM_IME_SETCONTEXT  
                                  WindowProc   =   DefWindowProc(hwnd,   uMsg,   wParam,   lParam)  
                                  Exit   Function  
          End   Select  
           
          WindowProc   =   CallWindowProc(hPrevProc,   hwnd,   uMsg,   wParam,   lParam)  
  End   Function  
   
  Top

相关问题

  • 困扰!
  • 困扰
  • picturebox
  • textbox
  • 求救:打印winform窗体(包括button,textbox,picturebox,listview...)
  • pictureBox
  • 如何用最简捷的代码实现textbox在picturebox中用鼠标移动?
  • 如何将用COMMONDIALOG.SHOWOPEN所打开的文件输出到picturebox或textbox上
  • vb如何实现控件(如textbox,picturebox)的临时创建及显现
  • 如何让窗体中的textbox 或者picturebox显示窗体下面的内容。

关键词

  • .net
  • 输入法
  • 控件
  • 表格
  • 文字
  • 解决
  • picturebox
  • byval
  • hhwnd
  • textbox

得分解答快速导航

  • 帖主:junwhj
  • bbe

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo