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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

    做完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 LongPrivate 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方法
      

  9.   

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

  10.   

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

  11.   

    IME输入窗口显示问题: 因为PictureBox对WM_IME_SETCONTEXT进行了处理,用DefWindowProc返回即可。Option ExplicitPublic 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 LongPublic Sub SubClass(hHwnd As Long)
        hPrevProc = SetWindowLong(hHwnd, GWL_WNDPROC, AddressOf WindowProc)
    End SubPublic Sub UnSubClass(hHwnd As Long)
        SetWindowLong hHwnd, GWL_WNDPROC, hPrevProc
    End SubPublic 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