




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仿 Microsoft 屏幕键盘VB6例程详解一、界面设计准备: 制作屏幕键盘图标、手形、双手拇指、左小指、左无名指、左中指、左食指、左拇指、右拇指、右食指、右中指、右无名指、右小指等图标共13个。(原作者提供)控件: 窗体 Form : Name(名称) “ScreenKeyboard”,BackColor(背景色)&H00A85E33&,BorderStyle(边框样式)1-固定单边,Caption(标题) “仿Microsoft屏幕键盘”,ControlBox(控制按钮) True,Height(高)3120缇,Icon(图标)“屏幕键盘图标”,MaxButton(最大化按钮)False,MinButton(最小化按钮)True,MousePointer(指针类型)15-尺寸全部,ScaleMode(度量单位)4-字符,StartUpPosition(窗体位置)3-缺省,Width(宽)11130缇,WindowState(窗口状态)0-默认。 按钮 CommandButton : 按钮数组,Name(名称)“SKB”,BackColor(背景色)白,Height(高)1.7字符,MousePointer(指针类型)99-自定义,Style(样式)1-图形,Width(宽)4字符。复制成80个。按钮数组,Name(名称)“小键盘”,BackColor(背景色)白,Height(高)1.7字符,MousePointer(指针类型)99-自定义,Style(样式)1-图形,Width(宽)4字符。复制成11个。 将前80个改为如下按钮:标题Caption高标识左Left鼠标图标提示文字ToolTipText顶Top宽取消270左小指Escape0F11128左无名指Function10F211312左中指Function20F311416左食指Function30F411520左食指Function40F511626右食指Function50F611730右中指Function60F711834右无名指Function70F811938右小指Function80F912044右小指Function90F1012148右小指Function100F1112252右小指Function110F1212356右小指Function1201920左小指Acuteaccent(重音符号)或Tilde(代字符号)2.5!494左小指1或Exclamationmark(感叹号)2.5508左无名指2或Commercialat(单价符号)2.5#5112左中指3或Numbersign(号码符号)2.5$5216左食指4或Dollarsign(美元符号)2.5%5320左食指5或Percentsign(百分号)2.55424右食指6或Caret(脱字符号)2.5&5528右食指7或Ampersand(与号)2.5*5632右中指8或Asterisk(星号)2.5(5736右无名指9或Leftparenthesis(左圆括号)2.5)4840右小指0或Rightparenthesis(右圆括号)2.5_18944右小指Hyphen(连字符号)或Underscore(下划线)2.5+18748右小指Equalssign(等号)或Plussign(加号)2.5退格852右小指BackSpace2.58制表符90左小指Tab4.26Q816左小指q或Q4.2W8710左无名指w或W4.2E6914左中指e或E4.2R8218左食指r或R4.2T8422左食指t或T4.2Y8926右食指y或Y4.2U8530右食指u或U4.2I7334右中指i或I4.2O7938右无名指o或O4.2P8042右小指p或P4.221946右小指Leftsquarebracket(左方括号)或Leftcurlybrace(左花括号)4.222150右小指Rightsquarebracket(右方括号)或Rightcurlybrace(或右花括号)4.2|22054右小指Backslash(反斜杠)或Verticalbar(竖杠)4.26A657左小指a或A5.9S8311左无名指s或S5.9D6815左中指d或D5.9F7019左食指f或F5.9G7123左食指g或G5.9H7227右食指h或H5.9J7431右食指j或J5.9K7535右中指k或K5.9L7639右无名指l或L5.9:;18643右小指Semicolon(分号)或Colon(冒号)5.922247右小指Apostrophe(撇号)或Quotationmark(引号)5.9回车1351右小指Enter5.99Z909左小指z或Z7.6X8813左无名指x或X7.6C6717左中指c或C7.6V8621左食指v或V7.6B6625左食指b或B7.6N7829右食指n或N7.6M7733右食指m或M7.619041右无名指Period(句点)或Greaterthan(大于号)7.6?19145右小指Solidus(斜线)或Questionmark(问号)7.6空格3216双手拇指Space9.323快照需求4462右食指PrintScreen(复制屏幕)或Systemrequirements(系统需求)0暂停中止1970右无名指Pause或Break0插入改写4562右食指Insert或Overwrite2.5删除4662右食指Delete4.2开头3666右中指Home2.5末尾3566右中指End4.2前页3370右无名指PageUp2.5后页3470右无名指PageDown4.23762右食指LeftArrow9.33866右中指UpArrow7.63970右无名指RightArrow9.34066右中指DownArrow9.3+3.410788右小指Plus4.2-10988右小指Minus2.510684右小指IsMultipliedBy2.511180右小指IsDividedBy2.5将后11个改为如下按钮:标题Caption标识Index左Left鼠标图标MouseIcon提示文字ToolTipText顶Top宽Width插9676右拇指0或Insert9.38尾9776右食指1或End7.69880右中指2或7.6后9984右无名指3或PageDown7.610076右食指4或5.910180右中指55.910284右无名指6或5.9头10376右食指7或Home4.210480右中指8或4.2前10584右无名指9或PageUp4.2删11084右无名指Period或Delete9.3还有13个特殊的键需要设置如下属性:名称Name背景色16进制标题Caption高标识左鼠标图标指针样式提示文字ToolTipText顶Top宽小回车白回车3.488右小指991Enter7.64数字锁00FFE0数字锁定1.776右食指991NumberLock2.54大写锁D9A16F大写锁定1.70左中指991CapitalLock5.97卷轴锁D9A16F卷轴锁定1.766右中指991ScrollLock04换档D9A16F换档1.71600左无名指991Shift7.69换档D9A16F换档1.716149右无名指991Shift7.611控制D9A16F控制1.71620左小指991Control9.36控制D9A16F控制1.716354右小指991Control9.36转换D9A16F转换1.716411左拇指991Alter9.35转换D9A16F转换1.716539右拇指991Alter9.35徽标D9A16F徽标1.7916左食指991Windows徽标9.35徽标D9A16F徽标1.79244右食指991Windows徽标9.35快捷菜单D9A16F快捷菜单1.749右中指991Pop-upMenu9.35标签Label:名称Name对齐自动大小背景样式标题Caption前景色16进制高左Left顶Top宽数字灯2True000FFE00.75大写灯2True0D9A16F0.75卷轴灯2True0D9A16F0.75890.21.5Label12True0数字灯白0.75760.954.5Label22True0大写灯白0.7581.750.954.5Label32True0卷轴灯白0.7587.50.954.5 菜单: 标题“快捷菜单”,名称“MnuRight”,可见False。以下是四个菜单项: 标题“关于软件”,名称“MnuAbout”,可见True; 标题“版本信息”,名称“MnuEdition”,可见True; 标题“编程语言”,名称“MnuProgramme”,可见True; 标题“作者信息”,名称“MnuAuthor”,可见True。二、源代码部分Option ExplicitRem 转移输入焦点的声明Private Declare Function GetWindowLong Lib user32 Alias GetWindowLongA (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib user32 Alias SetWindowLongA (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongRem 窗口置顶的声明Private Declare Function 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) As LongRem 移动没有标题栏窗体的声明Private Declare Function ReleaseCapture Lib user32 () As LongPrivate Declare Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongRem 模拟按键声明Private Declare Sub keybd_event Lib user32 (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Rem 禁止本窗体拥有输入焦点的常数Private Const HWND_NOTOPMOST = -2Private Const WS_DISABLED = &H8000000Private Const GWL_EXSTYLE = (-20)Private Const GWL_STYLE = (-16)Rem 窗口置顶的常数Private Const HWND_TOPMOST = -1Private Const SWP_NOACTIVATE = &H10Private Const SWP_NOMOVE = &H2Private Const SWP_NOSIZE = &H1Private Const SWP_SHOWWINDOW = &H40Rem 移动没有标题栏窗体的常数Private Const HTCAPTION = 2Private Const WM_NCLBUTTONDOWN = &HA1Rem 模拟按钮常数Private Const KEYEVENTF_KEYUP = &H2Rem 以下是程序执行主体部分Rem 窗体调用时置顶,且禁止拥有输入焦点Private Sub Form_Load() Me.Show 小写字母 下档符号 数字小键盘 数字锁.SetFocus SKB(8).Caption = 退格 & Chr(10) & SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_DISABLEDEnd SubRem 鼠标移动到窗体上时,窗体置顶Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZEEnd SubRem 移动没有标题栏窗体,弹出快捷菜单Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ReleaseCapture SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& If Button = 2 Then PopupMenu MnuRight, 2, , , MnuAbout End IfEnd SubRem 窗体重现时,设置其位置在屏幕中下方且置顶Private Sub Form_Paint() SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE Me.Left = Screen.Width / 2 - Me.Width / 2 Me.Top = Screen.Height - Me.Height - 450End SubRem 防止执行多次Private Sub Form_Initialize() If App.PrevInstance Then EndEnd SubRem 弹出式快捷菜单项Private Sub MnuAbout_Click() MsgBox 1气球提示:鼠标指针指向某个键,停留片该,将会显示该键的英文全称或中文全称。 _ & Chr(10) & 2指法提示:鼠标指针的形状在每个键上都根据相应指法发生变化。 _ & Chr(10) & 3高亮提示:按下某个键时,该键会变得高亮;如果按下的是开关键,相应的指示灯也会变得高亮。 _ & Chr(10) & 4换档提示:当按下 Caps Lock 、Shift 、Num Lock 键时,相应的,大写字母、上档符号、小键盘数字会突出显示; _ & 反之, 当弹起 Caps Lock 、Shift 、Num Lock 键时,相应的,小写字母、下档符号、小键盘光标键会突出显示。 _ & Chr(10) & 5随手移动:在键盘背景处用鼠标拖动,可移动键盘。, , 关于仿 Microsoft 屏幕键盘End SubPrivate Sub MnuAuthor_Click() MsgBox 作者:盛华 _ & Chr(10) & 昵称:周星骋 _ & Chr(10) & :249498337 _ & Chr(10) & 邮箱:ShengH _ & Chr(10) & 地址:陕西省安康市白河县教体局招生办, , 作者信息End SubPrivate Sub MnuProgramme_Click() MsgBox Microsoft(C) Visual Basic(R) 6.0, , 编程语言End SubPrivate Sub MnuEdition_Click() MsgBox 仿 Microsoft 屏幕键盘 & Chr(10) & 版本: & Chr(10) & 2007年7月7日7时7分7秒, , 版本信息End SubRem 用控件数组向外部窗口发送按键信息Private Sub SKB_Click(Index As Integer) keybd_event Index, 0, 0, 0 keybd_event Index, 0, KEYEVENTF_KEYUP, 0End SubRem 获得焦点键高亮Private Sub SKB_GotFocus(Index As Integer) SKB(Index).BackColor = &HFFE0&End SubPrivate Sub SKB_LostFocus(Index As Integer) SKB(Index).BackColor = vbWhiteEnd SubRem 三个控制键盘灯的键Private Sub 大写锁_Click() If 大写锁.BackColor = &HD9A16F Then 大写锁.BackColor = &HFFE0& 大写灯.ForeColor = &HFFE0& keybd_event 20, 0, 0, 0 keybd_event 20, 0, KEYEVENTF_KEYUP, 0 If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then 小写字母 Else 大写字母 End If Else 大写锁.BackColor = &HD9A16F 大写灯.ForeColor = &HD9A16F keybd_event 20, 0, 0, 0 keybd_event 20, 0, KEYEVENTF_KEYUP, 0 If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then 大写字母 Else 小写字母 End If End IfEnd SubPrivate Sub 数字锁_Click() If 数字锁.BackColor = &HD9A16F Then 数字锁.BackColor = &HFFE0& 数字灯.ForeColor = &HFFE0& keybd_event 144, 0, 0, 0 keybd_event 144, 0, KEYEVENTF_KEYUP, 0 If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then 光标小键盘 Else 数字小键盘 End If Else 数字锁.BackColor = &HD9A16F 数字灯.ForeColor = &HD9A16F keybd_event 144, 0, 0, 0 keybd_event 144, 0, KEYEVENTF_KEYUP, 0 光标小键盘 End IfEnd SubPrivate Sub 卷轴锁_Click() If 卷轴锁.BackColor = &HD9A16F Then 卷轴锁.BackColor = &HFFE0& 卷轴灯.ForeColor = &HFFE0& keybd_event 145, 0, 0, 0 keybd_event 145, 0, KEYEVENTF_KEYUP, 0 Else 卷轴锁.BackColor = &HD9A16F 卷轴灯.ForeColor = &HD9A16F keybd_event 145, 0, 0, 0 keybd_event 145, 0, KEYEVENTF_KEYUP, 0 End IfEnd SubRem 四组成对的特殊键Private Sub 控制_Click(Index As Integer) If 控制(Index).BackColor = &HD9A16F Then 控制(Index).BackColor = &HFFE0& keybd_event Index, 0, 0, 0 Else 控制(Index).BackColor = &HD9A16F keybd_event Index, 0, KEYEVENTF_KEYUP, 0 End IfEnd SubPrivate Sub 转换_Click(Index As Integer) If 转换(Index).BackColor = &HD9A16F Then 转换(Index).BackColor = &HFFE0& keybd_event Index, 0, 0, 0 Else 转换(Index).BackColor = &HD9A16F keybd_event Index, 0, KEYEVENTF_KEYUP, 0 End IfEnd SubPrivate Sub 徽标_Click(Index As Integer) If 徽标(Index).BackColor = &HD9A16F Then 徽标(Index).BackColor = &HFFE0& keybd_event Index, 0, 0, 0 Else 徽标(Index).BackColor = &HD9A16F keybd_event Index, 0, KEYEVENTF_KEYUP, 0 End IfEnd SubPrivate Sub 换档_Click(Index As Integer) If 换档(Index).BackColor = &HD9A16F Then 换档(Index).BackColor = &HFFE0& keybd_event Index, 0, 0, 0 上档符号 If 大写灯.ForeColor = &HFFE0& Then 小写字母 Else 大写字母 End If 光标小键盘 Else 换档(Index).BackColor = &HD9A16F keybd_event Index, 0, KEYEVENTF_KEYUP, 0 下档符号 If 大写灯.ForeColor = &HFFE0& Then 大写字母 Else 小写字母 End If If 数字灯.ForeColor = &HFFE0& Then 数字小键盘 Else 光标小键盘 End If End IfEnd SubRem 弹出式快捷菜单键Private Sub 快捷菜单_Click() keybd_event 93, 0, 0, 0 keybd_event 93, 0, KEYEVENTF_KEYUP, 0End SubPrivate Sub 快捷菜单_GotFocus() 快捷菜单.BackColor = &HFFE0&End SubPrivate Sub 快捷菜单_LostFocus() 快捷菜单.BackColor = &HD9A16FEnd SubRem 小键盘回车Private Sub 小回车_Click() keybd_event 13, 0, 0, 0 keybd_event 13, 0, KEYEVENTF_KEYUP, 0End SubPrivate Sub 小回车_GotFocus() 小回车.BackColor = &HFFE0&End SubPrivate Sub 小回车_LostFocus() 小回车.BackColor = vbWhiteEnd SubRem 处理小键盘上每个按键Private Sub 小键盘_GotFocus(Index As Integer) 小键盘(Index).BackColor = &HFFE0&End SubPrivate Sub 小键盘_LostFocus(Index As Integer) 小键盘(Index).BackColor = vbWhiteEnd SubPrivate Sub 小键盘_Click(Index As Integer) If 数字锁.BackColor = &HFFE0& Then keybd_event Index, 0, 0, 0 keybd_event Index, 0, KEYEVENTF_KEYUP, 0 Else Call 小键盘光标(Index) End IfEnd SubRem 自定义子函数,使得小键盘变成光标Sub 小键盘光标(ByVal NumIndex As Integer) Select Case NumIndex Case 96 keybd_event 45, 0, 0, 0 keybd_event 45, 0, KEYEVENTF_KEYUP, 0 Case 97 keybd_event 35, 0, 0, 0 keybd_event 35, 0, KEYEVENTF_KEYUP, 0 Case 98 keybd_event 40, 0, 0, 0 keybd_event 40, 0, KEYEVENTF_KEYUP, 0 Case 99 keybd_event 34, 0, 0, 0 keybd_event 34, 0, KEYEVENTF_KEYUP, 0 Case 100 keybd_event 37, 0, 0, 0 keybd_event 37, 0, KEYEVENTF_KEYUP, 0 Case 101 Case 102 keybd_event 39, 0, 0, 0 keybd_event 39, 0, KEYEVENTF_KEYUP, 0 Case 103 keybd_event 36, 0, 0, 0 keybd_event 36, 0, KEYEVENTF_KEYUP, 0 Case 104 keybd_event 38, 0, 0, 0 keybd_event 38, 0, KEYEVENTF_KEYUP, 0 Case 105 keybd_event 33, 0, 0, 0 keybd_event 33, 0, KEYEVENTF_KEYUP, 0 Case 110 keybd_event 46, 0, 0, 0 keybd_event 46, 0, KEYEVENTF_KEYUP, 0 End SelectEnd SubRem 自定义子函数,使子母键突出显示大写Sub 大写字母() SKB(65).Caption = & Chr(10) & a SKB(66).Caption = & Chr(10) & b SKB(67).Caption = & Chr(10) & c SKB(68).Caption = & Chr(10) & d SKB(69).Caption = & Chr(10) & e SKB(70).Caption = & Chr(10) & f SKB(71).Caption = & Chr(10) & g SKB(72).Caption = & Chr(10) & h SKB(73).Caption = & Chr(10) & i SKB(74).Caption = & Chr(10) & j SKB(75).Caption = & Chr(10) & k SKB(76).Caption = & Chr(10) & l SKB(77).Caption = & Chr(10) & m SKB(78).Caption = & Chr(10) & n SKB(79).Caption = & Chr(10) & o SKB(80).Caption = & Chr(10) & p SKB(81).Caption = & Chr(10) & q SKB(82).Caption = & Chr(10) & r SKB(83).Caption = & Chr(10) & s SKB(84).Caption = & Chr(10) & t SKB(85).Caption = & Chr(10) & u SKB(86).Caption = & Chr(10) & v SKB(87).Caption = & Chr(10) & w SKB(88).Caption = & Chr(10) & x SKB(89).Caption = & Chr(10) & y SKB(90).Caption = & Chr(10) & zEnd SubRem 自定义子函数,使子母键突出显示小写Sub 小写字母() SKB(65).Caption = A & Chr(10) & SKB(66).Caption = B & Chr(10) & SKB(67).Caption = C & Chr(10) & SKB(68).Caption = D & Chr(10) & SKB(69).Caption = E & Chr(10) & SKB(70).Caption = F & Chr(10) & SKB(71).Caption = G & Chr(10) & SKB(72).Caption = H & Chr(10) & SKB(73).Caption = I & Chr(10) & SKB(74).Caption = J & Chr(10) & SKB(75).Caption = K & Chr(10) & SKB(76).Caption = L & Chr(10) & SKB(77).Caption = M & Chr(10) & SKB(78).Caption = N & Chr(10) & SKB(79).Caption = O & Chr(10) & SKB(80).Caption = P & Chr(10) & SKB(81).Caption = Q & Chr(10) & SKB(82).Caption = R & Chr(10) & SKB(83).Caption = S & Chr(10) & SKB(84).Caption = T & Chr(10) & SKB(85).Caption = U & Chr(10) & SKB(86).Caption = V & Chr(10) & SKB(87).Caption = W & Chr(10) & SKB(88).Caption = X & Chr(10) & SKB(89).Caption = Y & Chr(10) & SKB(90).Caption = Z & Chr(10) & End SubRem 自定义子函数,使运算符号突出显示上档Sub 上档符号() SKB(48).Caption = ) & Chr(10) & 0 SKB(49).Caption = ! & Chr(10) & 1 SKB(50).Caption = & Chr(10) & 2 SKB(51).Caption = & Chr(10) & 3 SKB(52).Caption = & Chr(10) & 4 SKB(53).Caption = & Chr(10) & 5 SKB(54).Caption = & Chr(10) & 6 SKB(55).Caption = &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件水处理要求
- 职场说话技巧课件
- 课件模板整套感动
- 儿童道具创意课件
- 消费信用经济课件
- 幼儿运动课程培训
- 输液室学习课件
- 提高记忆方法课件
- 工伤安全培训课件
- 中医肾病护理培训
- 国家基层肥胖症综合管理技术指南(2025)解读课件
- 2025-2026学年冀人版(2024)小学科学二年级上册(全册)教学设计(附教材目录 )
- 2025年河北大学版(2024)小学信息科技三年级(全一册)教学设计(附目录 P179)
- 鲁科版高中物理必修第三册 第4章闭合电路欧姆定律与科学用电 第1节闭合电路欧姆定律 课件
- 物理实验安全培训
- 普通鱼缸买卖协议书
- T/CECS 10360-2024活毒污水处理装置
- 体重管理相关试题及答案
- 2026届高职单招考试大纲英语词汇(音标版)
- 临床护理文书书写规范课件
- 2025纯电动路面养护车技术规范
评论
0/150
提交评论