我的项目中不允许EditBox为空,至少都要有数字1在里面,所以我想在检测到退格键,就算按住退格键不放,编辑框中还是有数字1在里面,我应该怎么做呢?
解决方案 »
- vs2008 怎么添加一个自定义资源
- mfc42. dll 问题
- 请教各位关于vc+ado的问题,在线等
- GDI+ 中有没有 StretchBlt 类似的函数没有?速度比 GDI 如何?
- 如何在控件中的鼠标事件中得到鼠标的坐标?
- 请问,如何将VC程序的运行结果导入Excel表格,非常急迫
- 請教大家關於 GetProcAddress() 返回類型的問題? 謝謝 !!!
- 比如,我某步执行到sendMessage,再如何能进去该消息的处理函数呢?我用f11不行。
- 为什么老是报错说缺分号在这个宏之后DECLARE_PARSE_MAP()
- 这样使用BSTR会不会产生内存泄露
- 操!KBDLLHOOKSTRUCT 结构明明在winuser.h中存在呀,为什么我编译的时候她就是提示没有定于呢?
- 怎样将VC左下角的OVER覆盖置为无效....
所以建议你在按键消息中判断编辑框是否为空,如果不是就SetWindowText("1");
我的意思就是不能允许编辑框为空,而且现在只要按Backspace或其他键,就弹出一个对话框说“请输入数字!”很烦人。请问大侠,如何判断呢?好像EditBox没有OnKeyDown或者OnKeyPress啊!
GetWindowText如果是空就SetWindowText("1");
代码
Option Explicit
Private Sub Form_Load()
On Error Resume Next
ProcOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong hwnd, GWL_WNDPROC, ProcOld
End Sub
模块
Option Explicit
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public 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
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public ProcOld As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_COMMAND = &H111Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case iMsg
Case WM_COMMAND
Dim s As String * 255
GetWindowText lParam, s, 255
Dim i As Integer
Dim ss As String
For i = 1 To 255
If Mid(s, i, 1) <> Chr(0) Then
ss = ss & Mid(s, i, 1)
Else
Exit For
End If
Next i
MsgBox "标题 = " & ss & " ID = " & wParam
End Select
WindowProc = CallWindowProc(ProcOld, hwnd, iMsg, wParam, lParam)
End Function