求助:CFileDialog禁止键盘的Backspace键 如题,如何禁止CFileDialog打开文件对话框中的backspace键?如果实在不行,禁止整个键盘也行!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以试试在pretranslatemessage中处理不行的话,可以用键盘钩子 pretranslatemessage 和 OnkeyDown 都试过了。我是在派生的CFileDialogEx类中实现这两个函数的,结果都 不行。楼上所说的键盘钩子能否说的详细一些?我每用过键盘钩子。 键盘钩子WH_KEYBOARD_LL使用HHOOK glhHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,glhInstance,0);// 卸载钩子 if (glhHook!=NULL) UnhookWindowsHookEx(glhHook);// 低级键盘钩子处理函数LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)可以上网搜索下载一个源码例子来看,做一个DLL屏蔽所有你想要屏蔽的键盘按键 由于MFC中的CFileDialog已经安装了一个键盘钩子,并对键盘消息进行了处理,所以pretranslatemessage 和OnkeyDown 都无法获取键盘消息。钩子函数是对操作系统的消息队列进行监控的,所以在pretranslatemessage 之前获取消息。实现屏蔽backspace键的方法:派生CFileDialog类,在派生类中的构造函数里用SetWindowsHookEx加一个键盘钩子,注意在设定参数是只设定和本程序的主线程相关:hHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,0,GetCurrentThreadId());。如果最后一个参数为0,则安装的钩子过程将与桌面上运行的所有线程都相关,也就是说只要打开了这个对话框,那么桌面上所有的线程都将无法接收backspace键!!!对于钩子函数的声明和定义sz_04022已经给了定义键盘钩子的基本过程。 推荐一下 MFC 学习的书籍 想学MFC 光标不见了! 请教采集声卡输入数据的思路 RunScript 关于CArry的问题 哪位大哥告诉我BCGControlBar Professional Edition这东西怎么用? 请教CWinThread::InitInstance返回false的问题! CDoc中定义的变量在CMainFrm怎么访问 各位来看看,很容易的菜鸟的问题。我只有20分。 无法生成OLE自动化接口,何解? 函数参数为含CArray的结构体的问题!~~急 如何检测当前程序进程是否空闲
楼上所说的键盘钩子能否说的详细一些?我每用过键盘钩子。
HHOOK glhHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,glhInstance,0);// 卸载钩子
if (glhHook!=NULL)
UnhookWindowsHookEx(glhHook);
// 低级键盘钩子处理函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)可以上网搜索下载一个源码例子来看,做一个DLL屏蔽所有你想要屏蔽的键盘按键
钩子函数是对操作系统的消息队列进行监控的,所以在pretranslatemessage 之前获取消息。
实现屏蔽backspace键的方法:派生CFileDialog类,在派生类中的构造函数里用SetWindowsHookEx加一个键盘钩子,注意在设定参数是只设定和本程序的主线程相关:
hHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,0,GetCurrentThreadId());。
如果最后一个参数为0,则安装的钩子过程将与桌面上运行的所有线程都相关,也就是说只要打开了这个对话框,那么桌面上所有的线程都将无法接收backspace键!!!
对于钩子函数的声明和定义sz_04022已经给了定义键盘钩子的基本过程。