如果屏蔽键盘中的某些按钮? 在一个对话框中有一个edit控件,想控制用户的输入,如果屏蔽键盘上的某些按钮,使用户按下不在edit中显示? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用子类化实现,比如下边的例子就使edit只能接受a ~ z的字符:#include<windows.h>#include "resource.h"WNDPROC OldProc; // 原Edit窗口过程LRESULT CALLBACK ProcEdit(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam){ if (Msg == WM_CHAR && (wParam >= 'z' || wParam <= 'a')) // 如果在允许范围之外,则屏蔽输入 return TRUE; else return CallWindowProc(OldProc, hWnd, Msg, wParam, lParam);}LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam){ switch (Msg) { case WM_INITDIALOG: // 设置新的窗口过程 OldProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_EDIT), GWL_WNDPROC, (LONG)ProcEdit); break; case WM_CLOSE: EndDialog(hDlg, 0); break; case WM_DESTROY: PostQuitMessage(0); break; } return 0;}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIstance,PSTR szCmdLine,int iCmdShow){ DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0); return 0;} 简单些可以重载WM_CHAR这个消息映谢 webbrowser 有没办法和别的浏览器挂联? 有没有比较全点的Win32API手册? 如何将一段十六进制数写入文件中 (在线等!)想要在程序里建立一个符号表,改怎么做? 使用CDataGrid控件如何得到某一个单元的数据? 使用GetProcAddress不能得到DLL中的函数指针啊~~ 如何自绘任务条的图标 CString的问题??? 只需要传哪些几个文件呀 在VC中加入一个自定义的新类,如何使classwizard 也能识别? 请教关于Messenger信使服务的实现问题 线程之间的转换精度是汇编指令么?
#include<windows.h>
#include "resource.h"
WNDPROC OldProc; // 原Edit窗口过程
LRESULT CALLBACK ProcEdit(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
if (Msg == WM_CHAR && (wParam >= 'z' || wParam <= 'a'))
// 如果在允许范围之外,则屏蔽输入
return TRUE;
else
return CallWindowProc(OldProc, hWnd, Msg, wParam, lParam);
}
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_INITDIALOG:
// 设置新的窗口过程
OldProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_EDIT), GWL_WNDPROC, (LONG)ProcEdit);
break;
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIstance,PSTR szCmdLine,int iCmdShow)
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
return 0;
}