当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·好的东西    »显示摘要«
    摘要: 谁能够告诉我cmd是什么吗? 另外,我们怎么进入命令提示符啊! ......
 ·有关pb的一些问题    »显示摘要«
    摘要: 我从来没有用过pb,但是老师要求做课程设计(在学数据库原理). 要求用pb7.0 我买了张pb8.1版的软件,不知道行不行。 pb6.0 pb7.0 pb8.1 各有什么区别,区别大不大,主要是想问会不会影响开发 如果我用的教材是pb6.0在pb8.1上开发合适么? 谢谢 come on ,i wait for you! ......


怎样用代码打开关闭指定的输入法并打开软键盘

同上

NO.1   作者: wangluonanhai

用VB制作软键盘    
   
                                        青岛德固萨化学有限公司     杜运庆    
   
  看见微软智能拼音输入法的小键盘了吗?那东东可以在输入的时候用代替键盘。    
  当不希望操作员使用键盘的时候,那么你就要考虑为她或他提供软键盘了。下面我们就用VB来做这    
  个软键盘。    
  准备工作:    
  先画两个窗体Form1和Form2,Form2是作为接收按键测试用的,在上面放一个文本框Text1,把    
  Text1的MultiLine属性设为True,ScrollBars设为3-Both,然后写入如下代码:    
  Private   Declare   Function   EnableWindow   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal      
  fEnable   As   Long)   As   Long    
  Private   Sub   Form_Load()    
  调整大小    
  Me.Width   =   Screen.Width   *   0.9    
  Me.Height   =   Screen.Height   *   0.9    
  Form1.Show    
  禁止鼠标和键盘输入    
  EnableWindow   Text1.hwnd,   False    
  End   Sub    
  Private   Sub   Form_Resize()    
  调整文本框大小    
  Text1.   =   0    
  Text1.Left   =   0    
  Text1.Width   =   Me.ScaleWidth    
  Text1.Height   =   Me.ScaleHeight    
  End   Sub    
  Private   Sub   Form_Unload(Cancel   As   Integer)    
  End    
  End   Sub    
  Form1作为小键盘用,把它的BorderStyle设为3-Fixed   Dialog,把ControlBox属性设    
  为False,这样小键盘就没有标题栏了。Form1得跟微软智能拼音输入法的小键盘完全一样的大小    
  的窗体,经笔者的计算长×高是5310×2130。然后放上10个按扭,其中九个的Caption分别是    
  Tab、Caps、↑Shift、Ins、Del、(空格)、Esc、Enter和←(退格)。它们的位置和大小如下设    
  置:    
   
  Caption     Left   Height   Width   Name    
   
  ↑Shift   1230   0   400   840   Command1    
  Caps   828   0   400   560   Command2    
  Tab   410   0   400   480   Command3    
  Ins   1640   0   400   570   Command4    
  Del   1640   870   400   550   Command5    
  (空格)   1640   1400   400   2565   Command6    
  Esc   1640   4670   400   550   Command7    
  Enter   820   4590   400   630   Command9    
  ←(退格)   820   4590   400   630   Command10    
   
  接下来做一个Height为400、Width为360的按扭Command8,Caption为A     a,由于按扭太小,系统会自动换行,看上去A在a的上面。复制该按扭,然    
  后在窗体上粘贴,程序会提示你是否产生控件数组,选择是,Command8变成了Command8(0),新产    
  生的按扭为Command8(1),一直粘贴,直到Command8(46),修改它们的Caption使之与键盘上的其    
  它键一样。这里要注意几点:    
  1、按扭的字体为“小五”,有几个键显示的结果是纵向并排,可把字体设为“六号”,使之横向    
  并排,字体使用宋体,否则↑和←显示的不漂亮。    
  2、&符号要使用两个,即   &&   7(&&与7之间只有一个空格),确保每个按扭的Caption的长度为四    
  个字母。    
  3、把窗体的MousePointer设为15   -   Size   All,以便在运行的时候移动小键盘。    
  4、把所有按键的MousePointer都设为99   -   Custom,而MouseIcon设为手形指针。    
  5、由于要指示Shift是否按下,Command1的Style属性设置为1-Graphical。    
  6、Form2的StartUpPosition属性设置为2-屏幕中心。    
  我们把Command8(x)的这些键暂时叫做“普通键”。由于前面已经定位了9个特殊键,所以可以通    
  过菜单栏的“格式”里面的“顶端对齐”、“相同水平间距”等选项很容易地把47个普通键放到与    
  键盘对应的位置上。另外,为了显示CAPS   LOCK的状态,我们在窗体上加一个标签Label1,把它的    
  AutoSize属性设为True,Caption属性设为●,它的、Left、Height和With分别为1340、    
  4800、180和180。    
  接下来是写代码了,这里主要用了SendMessage发送消息的API函数,由于按扭CAPTION设置的巧    
  妙,所以47个普通键的代码就用的很少。所有代码如下:    
  API声明    
  Private   Declare   Function   ReleaseCapture   Lib   "user32"   ()   As   Long    
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal      
  hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Long)   As   Long    
  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)    
  Private   Declare   Sub   GetKeyboardStateByString   Lib   "user32"      
  Alias   "GetKeyboardState"   (ByVal   pbKeyState   As   String)    
  Private   Declare   Sub   SetKeyboardStateByString   Lib   "user32"      
  Alias   "SetKeyboardState"   (ByVal   lppbKeyState   As   String)    
  常数    
  Const   VK_CAPITAL   =   &H14    
  Const   WM_CHAR   =   &H102    
  Const   HTCAPTION   =   2    
  Const   WM_NCLBUTTONDOWN   =   &HA1    
  Const   WM_KEYDOWN   =   &H100    
  Const   VK_DELETE   =   &H2E    
  Const   VK_INSERT   =   &H2D    
  定义变量    
  Dim   rc   as   Long    
   
  Private   Sub   Command1_Click()    
  Shift键    
  If   Command1.BackColor   =   &H8000000B   Then    
  Command1.BackColor   =   &H80000005    
  Else    
  Command1.BackColor   =   &H8000000B    
  End   If    
  End   Sub    
   
  退格键    
  Private   Sub   Command10_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   8,   1)    
  End   Sub    
   
  大小写转换键    
  Private   Sub   Command2_MouseDown(Button   As   Integer,   Shift   As   Integer,   X   As      
  Single,   Y   As   Single)    
  Dim   CAPITALKey   As   String   *   256    
  CAPITALKey   =   Space$(256)    
  GetKeyboardStateByString   (CAPITALKey)    
  If   Label1.ForeColor   =   vbBlack   Then    
  Label1.ForeColor   =   vbGreen    
  Mid$(CAPITALKey,   VK_CAPITAL   +   1,   1)   =   Chr$(1)    
  Else    
  Label1.ForeColor   =   vbBlack    
  Mid$(CAPITALKey,   VK_CAPITAL   +   1,   1)   =   Chr$(0)    
  End   If    
  Call   SetKeyboardStateByString(CAPITALKey)    
  End   Sub    
   
  TAB键    
  Private   Sub   Command3_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   9,   1)    
  End   Sub    
   
  Ins键    
  Private   Sub   Command4_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_KEYDOWN,   VK_INSERT,   &H510001)    
  End   Sub    
   
  Del键    
  Private   Sub   Command5_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_KEYDOWN,   VK_DELETE,   1)    
  End   Sub    
   
  空格键    
  Private   Sub   Command6_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   32,   1)    
  End   Sub    
   
  Esc键    
  Private   Sub   Command7_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   27,   1)    
  End   Sub    
   
  普通键    
  Private   Sub   Command8_Click(Index   As   Integer)    
  Dim   keyx   As   Integer    
  If   Command1.BackColor   =   &H80000005   Xor   Label1.ForeColor   =   vbGreen   Then    
  keyx   =   Asc(Mid(Command8(Index).Caption,   1,   1))    
  Else    
  keyx   =   Asc(Mid(Command8(Index).Caption,   4,   1))    
  End   If    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   keyx,   1)    
  Command1.BackColor   =   &H8000000B    
  End   Sub    
   
  回车键    
  Private   Sub   Command9_Click()    
  rc   =   SendMessage(Form2.Text1.hwnd,   WM_CHAR,   13,   1)    
  End   Sub    
   
  让小键盘在最前面    
  Private   Sub   Form_Load()    
        rtn   =   SetWindowPos(Me.hwnd,   -1,   0,   0,   0,   0,   3)    
  End   Sub    
   
  移动没有标题的小键盘    
  Private   Sub   Form_MouseDown(Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y      
  As   Single)    
  If   Button   =   1   Then    
            Dim   ReturnVal   As   Long    
            X   =   ReleaseCapture()    
            ReturnVal   =   SendMessage(hwnd,   WM_NCLBUTTONDOWN,   HTCAPTION,   0)    
  End   If    
  End   Sub    
  最后要提醒您的是:如果你要用于多个Text要做如下两步:    
  1、把FORM2中的EnableWindow   Text1.hwnd,   False去掉。    
  2、把软键盘代码中所有的Form2.Text1.Hwnd换成如下代码:Form2.ActiveControl.hwnd    
  瞧,超酷的小键盘就这样做成了!该程序在VB6+WIN98下运行通过,如果你需要本事例的源代码,    
  请在本文见报后到第一VB论坛的首页下载吧!网址是http://www.vbgood.com    
 


    摘要: 要用java写个应用程序,实现这么一种功能: 应用程序界面分成左右两部分,左半显示一个树型目录列表,右半部分是具体内容显示区。当把左半中的某个目录项拖到右半区域时,右半区域会显示出该目录项的具体内容。 比如,左半列出的是数据库中各个表的名字,要求当把某表名拖到右半以后,右半自动用一个表格的形式显示出该表的结构信息(字段组成、字段属性等)。 我刚刚开始学习窗口编程,面对这样的问题一下子觉得无......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE