拼音输入法的小键盘供参考

上传人:pu****.1 文档编号:494742612 上传时间:2022-10-11 格式:DOC 页数:9 大小:22KB
返回 下载 相关 举报
拼音输入法的小键盘供参考_第1页
第1页 / 共9页
拼音输入法的小键盘供参考_第2页
第2页 / 共9页
拼音输入法的小键盘供参考_第3页
第3页 / 共9页
拼音输入法的小键盘供参考_第4页
第4页 / 共9页
拼音输入法的小键盘供参考_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《拼音输入法的小键盘供参考》由会员分享,可在线阅读,更多相关《拼音输入法的小键盘供参考(9页珍藏版)》请在金锄头文库上搜索。

1、看见微软智能拼音输入法的小键盘了吗?那东东可以在输入的时候用代替键盘。 当不希望操作员使用键盘的时候,那么你就要考虑为她或他提供软键盘了。下面我们就用VB来做这 个软键盘。 准备工作: 先画两个窗体Form1和Form2,Form2是作为接收按键测试用的,在上面放一个文本框Text1,把 Text1的MultiLine属性设为True,ScrollBars设为3-Both,然后写入如下代码: PrivateDeclareFunctionEnableWindowLibuser32(ByValhwndAsLong,ByVal fEnableAsLong)AsLong PrivateSubForm_

2、Load() 调整大小 Me.Width=Screen.Width*0.9 Me.Height=Screen.Height*0.9 Form1.Show 禁止鼠标和键盘输入 EnableWindowText1.hwnd,False EndSub PrivateSubForm_Resize() 调整文本框大小 Text1.Top=0 Text1.Left=0 Text1.Width=Me.ScaleWidth Text1.Height=Me.ScaleHeight EndSub PrivateSubForm_Unload(CancelAsInteger) End EndSub Form1作为小键

3、盘用,把它的BorderStyle设为3-FixedDialog,把ControlBox属性设 为False,这样小键盘就没有标题栏了。Form1得跟微软智能拼音输入法的小键盘完全一样的大小 的窗体,经笔者的计算长高是53102130。然后放上10个按扭,其中九个的Caption分别是 Tab、Caps、Shift、Ins、Del、(空格)、Esc、Enter和(退格)。它们的位置和大小如下设 置: CaptionTopLeftHeightWidthName Shift12300400840Command1 Caps8280400560Command2 Tab4100400480Command

4、3 Ins16400400570Command4 Del1640870400550Command5 (空格)164014004002565Command6 Esc16404670400550Command7 Enter8204590400630Command9 (退格)8204590400630Command10 接下来做一个Height为400、Width为360的按扭Command8,Caption为Aa(注意中间是两个空 格,这一点非常重要!),由于按扭太小,系统会自动换行,看上去A在a的上面。复制该按扭,然 后在窗体上粘贴,程序会提示你是否产生控件数组,选择是,Command8变成了C

5、ommand8(0),新产 生的按扭为Command8(1),一直粘贴,直到Command8(46),修改它们的Caption使之与键盘上的其 它键一样。这里要注意几点: 1、按扭的字体为“小五”,有几个键显示的结果是纵向并排,可把字体设为“六号”,使之横向 并排,字体使用宋体,否则和显示的不漂亮。 2、&符号要使用两个,即&7(&与7之间只有一个空格),确保每个按扭的Caption的长度为四 个字母。 3、把窗体的MousePointer设为15-SizeAll,以便在运行的时候移动小键盘。 4、把所有按键的MousePointer都设为99-Custom,而MouseIcon设为手形指针。

6、 5、由于要指示Shift是否按下,Command1的Style属性设置为1-Graphical。 6、Form2的StartUpPosition属性设置为2-屏幕中心。 我们把Command8(x)的这些键暂时叫做“普通键”。由于前面已经定位了9个特殊键,所以可以通 过菜单栏的“格式”里面的“顶端对齐”、“相同水平间距”等选项很容易地把47个普通键放到与 键盘对应的位置上。另外,为了显示CAPSLOCK的状态,我们在窗体上加一个标签Label1,把它的 AutoSize属性设为True,Caption属性设为,它的Top、Left、Height和With分别为1340、 4800、180和1

7、80。 接下来是写代码了,这里主要用了SendMessage发送消息的API函数,由于按扭CAPTION设置的巧 妙,所以47个普通键的代码就用的很少。所有代码如下: API声明 PrivateDeclareFunctionReleaseCaptureLibuser32()AsLong PrivateDeclareFunctionSendMessageLibuser32AliasSendMessageA(ByVal hwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong PrivateDeclareFunctionSet

8、WindowPos&Libuser32(ByValhwndAsLong,ByVal hWndInsertAfterAsLong,ByValXAsLong,ByValYAsLong,ByValcxAsLong, ByValcyAsLong,ByValwFlagsAsLong) PrivateDeclareSubGetKeyboardStateByStringLibuser32 AliasGetKeyboardState(ByValpbKeyStateAsString) PrivateDeclareSubSetKeyboardStateByStringLibuser32 AliasSetKeybo

9、ardState(ByVallppbKeyStateAsString) 常数 ConstVK_CAPITAL=&H14 ConstWM_CHAR=&H102 ConstHTCAPTION=2 ConstWM_NCLBUTTONDOWN=&HA1 ConstWM_KEYDOWN=&H100 ConstVK_DELETE=&H2E ConstVK_INSERT=&H2D 定义变量 DimrcasLong PrivateSubCommand1_Click() Shift键 IfCommand1.BackColor=&H8000000BThen Command1.BackColor=&H8000000

10、5 Else Command1.BackColor=&H8000000B EndIf EndSub 退格键 PrivateSubCommand10_Click() rc=SendMessage(Form2.Text1.hwnd,WM_CHAR,8,1) EndSub 大小写转换键 PrivateSubCommand2_MouseDown(ButtonAsInteger,ShiftAsInteger,XAs Single,YAsSingle) DimCAPITALKeyAsString*256 CAPITALKey=Space$(256) GetKeyboardStateByString(CAP

11、ITALKey) IfLabel1.ForeColor=vbBlackThen Label1.ForeColor=vbGreen Mid$(CAPITALKey,VK_CAPITAL+1,1)=Chr$(1) Else Label1.ForeColor=vbBlack Mid$(CAPITALKey,VK_CAPITAL+1,1)=Chr$(0) EndIf CallSetKeyboardStateByString(CAPITALKey) EndSub TAB键 PrivateSubCommand3_Click() rc=SendMessage(Form2.Text1.hwnd,WM_CHAR

12、,9,1) EndSub Ins键 PrivateSubCommand4_Click() rc=SendMessage(Form2.Text1.hwnd,WM_KEYDOWN,VK_INSERT,&H510001) EndSub Del键 PrivateSubCommand5_Click() rc=SendMessage(Form2.Text1.hwnd,WM_KEYDOWN,VK_DELETE,1) EndSub 空格键 PrivateSubCommand6_Click() rc=SendMessage(Form2.Text1.hwnd,WM_CHAR,32,1) EndSub Esc键 PrivateSubCommand7_Click() rc=SendMessage(Form2.Text1.hwnd,WM_CHAR,27,1) EndSub 普通键 PrivateSubCommand8_Click(IndexAsInteger) DimkeyxAsInteger IfCommand1.BackColor=&H80000005XorLabel1.ForeColor=vbGreenThen keyx=Asc(Mid(Command8(Index).Caption,1,1) Else keyx=Asc(Mid(Command8(Index).Caption,4,1) EndIf

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号