打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB入门技巧N例(1)
userphoto

2011.01.31

关注
1. 如何消除textbox中按下回车时的beep声?
  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2.   If KeyAscii = 13 Then
  3.      KeyAscii = 0
  4.   End If
  5. End Sub
复制代码

2.Textbox获得焦点时自动选中。
  1. Private Sub Text1_GotFocus()
  2.   Text1.SelStart = 0
  3.   Text1.SelLength = Len(Text1.Text)
  4. End Sub
复制代码


3.屏蔽textbox控件自身的右键菜单,并显示自己的菜单。
方法一:
  1. Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y _
  2. As Single)
  3.    If Button = 2 Then
  4.      Text1.Enabled = False
  5.      Text1.Enabled = True
  6.      PopupMenu mymenu
  7.    End If
  8. End Sub
复制代码


方法二:回调函数
  1. module:
  2. Option Explicit
  3. Public OldWindowProc As Long ' 保存默认的窗口函数的地址
  4. Public Const WM_CONTEXTMENU = &H7B ' 当右击文本框时,产生这条消息
  5. Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd _  
  6. As Long, ByVal nIndex As Long) As Long
  7. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd _  As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  8. Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal _ lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  9. Public Function SubClass_WndMessage(ByVal hWnd As Long, ByVal Msg As Long, ByVal wp _
  10. As Long, ByVal lp As Long) As Long
  11. ' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
  12. If Msg <> WM_CONTEXTMENU Then
  13.    SubClass_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
  14.    Exit Function
  15. End If
  16. SubClass_WndMessage = True
  17. End Function
  18. 窗体中:
  19. Private Const GWL_WNDPROC = (-4)
  20. Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y _  
  21. As Single)
  22. If Button = 1 Then Exit Sub
  23.    oldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC) ' 取得窗口函数的地址
  24.       ' 用SubClass_WndMessage代替窗口函数处理消息
  25.    Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass_WndMessage)
  26. End Sub
  27. Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  28.   If Button = 1 Then Exit Sub
  29.     ' 恢复窗口的默认函数
  30.     Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
  31.     PopupMenu mymenu
  32. End Sub
复制代码

4. 设置TEXTBOX为只读属性
  1. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd _
  2. As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  3. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd _ As Long, ByVal nIndex As Long) As Long
  4. Private Const GWL_STYLE = (-16)
  5. Private Const EM_SETREADONLY = &HCF
  6. Private Sub Command1_Click()
  7.   Dim l As Long
  8.   If (GetWindowLong(Text1.hwnd, GWL_STYLE) And &H800) Then
  9.      Text1.Text = "This is a read/write text box."   '文本窗口是只读窗口,设置为可读写窗口
  10.      l = SendMessage(Text1.hwnd, EM_SETREADONLY, False, vbNull)
  11.      Text1.BackColor = #ffffff   '将背景设置为白色
  12.      Command1.Caption = "Read&Write"
  13.    Else
  14.      Text1.Text = "This is a readonly text box."    '文本窗口是可读写窗口,设置为只读窗口
  15.      l = SendMessage(Text1.hwnd, EM_SETREADONLY, True, vbNull)
  16.      Text1.BackColor = vbInactiveBorder   '将背景设置为灰色
  17.      Command1.Caption = "&ReadOnly"
  18.   End If
  19. End Sub
复制代码






本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用messageboxtimeout api函数实现自动关闭的msgbox
如何在VB中判断Windows9x的运行模式
API未公开函数解密
VBA常用代码解析(第三十七讲)
5行代码 把cad窗体镶入到自已的窗体
功能强大的SendMessage函数 vb编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服