当前位置:首页 » 程序代码 » 正文

用VB做一个输入法:做一个无焦点的窗体

很多人都想用VB语言来做一个输入法,或想用VB做输入文字功能的鼠标点击输入法,如五笔输入法,全拼输入法,鼠标输入法,本人就用VB做过这种输入法,现在开始教大家来做,先申明,由于Visual Basic这个语言本身的原因,它只能做外挂式的输入法,像万能五笔那种,所以,VB可以用外挂的五笔输入法软件 或者 做一个外挂的拼音输入法软件。

好了,现在开始讲做用VB做输入法的第一步,做一个无焦点的窗体,输入法一般都是没有标题栏的,就算有标题栏也是没有焦点的(本文来自wb86.com)。

用VB做焦点的窗体,我们要靠API来帮VB实现此功能。

先在窗体模块输入:
Private Const GWL_STYLE = (-16)
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40
Private Const WS_EX_NOACTIVATE = &H8000000
Private Const GWL_EXSTYLE = (-20)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)

然后在窗体的load事件里输入:
Private Sub Form_Load()
    Dim style     As Long
    style = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    style = style Or WS_EX_NOACTIVATE
    Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, style)
    SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub

运行以上VB输入法源代码后,发现此窗体启动后没有焦点,即标题栏是灰色的,你点击窗体后发现窗体还是有焦点的,但你不用急,你生成EXE后,你就会发现,这个现象不会出现的。

用VB用一个无焦点窗口就这么简单,如果你在窗体上放置标签控件等本身没有焦点的控件,点击它们,也不会影响窗体拥有焦点,但是如果放置自己可以拥有焦点的控件,如按钮控件,用鼠标点击按钮,窗体就会拥有焦点,怎么办呢?要知道,用VB编写输入法后,有时,你还想做一个软键盘的,软键盘上就有布置不少的按钮的。

大家不用急,这个没有焦点的按钮,VB也可以靠API搞定,想知道如何搞定,看我的下一篇文章吧。

来源:济亨网

本文链接:http://wb98.com/post/13.html

VB代码  API  
    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号