五笔打字通主页
用VB做一个输入法:无焦点的按钮(用于软键盘)
一般的输入法都带有软键盘,如果用VB来做输入法的软键盘,那布置在窗体上的按钮,没有焦点要稍好看一点。
VB默认的控件中,CommandButton这个控件本身是还焦点的。怎样VB窗体上的按钮无焦点呢,目前我想到有下面几个方法:
1.在按钮的点击事件中,用SetFocus这个方法转移焦点,如 text1.SetFocus 把焦点转移到文本框控件中,但是这个方法会让窗体拥有焦点,所以这个方法不适用于输入法软键盘的代码中。
2.MS form 2.0工具箱有一个无焦点的按钮控件,这个按钮无焦点,而且是现存的,但是做输入法软键盘,我却不考虑,因为,VB做好这个输入法后,打包时,就必须要把 MS form 2.0 这个控件打包进去,增加了软件的大小,虽然现在宽带横行,但我还是想把软件做小一点,尽可能把软件做成绿色软件,不再打包别的DLL,OCX等别的文件。
3.自己做一个控件,对于VB初学者,这个难度稍大的,如果不打算在做的软件都用上这个无焦点的按钮,我看也没有必须花太多时间去做一个控件。
4.在窗体上用无焦点的标签,Line控件模拟一个按钮,这个方法做一个按钮还行,做软键盘上的26个按钮,就太麻烦了。(wb86.com)
我采用的方法是使用VB6.0自带的默认CommandButton,再加上API,让这个按钮在点击时没有焦点。做无焦点CommandButton控件方法如下:
首先在窗体模块上输入API代码:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_KILLFOCUS = &H8
在窗体上画一个按钮,在点击事件输入VB代码:
Private Sub Command1_Click()
SendMessage Command1.hwnd, WM_KILLFOCUS, 0, 0
End Sub
将此VB源代码生成EXE后,运行,发现按钮是有焦点的,点击后,发现此按钮就不再有焦点了,以后,再怎么点击,这个按钮就会再拥有焦点。
来源:济亨网
本文链接:http://wb86.com/post/14.html