重载PreTranslateMessage函数屏蔽回车和ESC的消息:
BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYDOWN == pMsg->message )
{
UINT nKey = (int) pMsg->wParam;
if( VK_RETURN == nKey || VK_ESCAPE == nKey )
return TRUE ;
}
return CDialog::PreTranslateMessage(pMsg);
}
关于PreTranslateMessage函数:
MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。只有穿过消息队列的消息才受PreTranslateMessage()影响,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬PreTranslateMessage()的存在。
一、是否调用TranslateMessage()和DispatchMessage()是由一个名称为PreTranslateMessage()函数的返回值决定的,如果该函数返回TRUE,则不会把该消息分发给窗口函数处理。
二、传给PreTranslateMessage()的消息是未经翻译过的消息,它没有经过TranslateMessage()处理。可以在该函数中使用(pMsg->wParam==VK_RETURN)来拦截回车键。
三、在WindowProc里不能处理WM_Char消息。
四、SetWindowText会发送WM_Char给窗口。
五、PeekMessage和GetMessage的区别:
GetMessage在没有消息的时候等待消息,cpu当然低
PeekMessage没有消息的时候立刻返回,所以cpu占用率高。
因为游戏不能靠windows消息驱动,所以要用PeekMessage();
分享到:
相关推荐
### VC屏蔽Enter和ESC退出程序知识点详解 #### 标题:VC屏蔽Enter和ESC退出程序 在编程领域,特别是对于使用Visual C++ (VC) 开发的应用程序来说,有时候我们可能希望用户不能通过简单的按键操作(如按下Enter或...
摘要:VC/C++源码,界面编程,对话框 VC++如何屏蔽窗体对话框按ESC或ENTER键退出的功能,也就是说,当窗体打开的时候,按ESC或ENTER键不能关闭窗口,也就是让这两个键失效,源码实例运行截图如上所示,不过从截图上...
针对“vc6.0 debug下结束程序,程序不退出”这一问题,我们可以深入探讨其原因和解决方法。 首先,我们需要了解VC6.0的调试环境。Debug模式是专门为开发者设计的,它允许我们设置断点、查看变量值、单步执行代码等...
1.网页游戏登录器,使用webbrowser。 2.防止webbrowser网页跳转,强行在程序浏览器中...3.重载PreTranslateMessage,实现屏蔽vc6基本对话框默认的回车和ESC键退出。 4.实时获取点击网页flash游戏时,鼠标点击的坐标。
总的来说,拦截和屏蔽窗口关闭消息是Windows编程中的一个重要技巧,它可以在特定场景下防止用户意外关闭程序,或者在关闭前执行必要的保存、清理等操作。在VC++中,通过重载窗口过程或设置新的窗口过程,我们可以...
标题中的“VC6程序无法退出_插件补丁”指的是在使用Visual C++ 6.0(简称VC6)开发的程序在Windows 7 64位系统上运行时,遇到程序无法正常退出的问题。这可能是因为某些系统兼容性问题或者VC6自身存在的bug导致的。...
VC 屏蔽和解除任意按钮,运行于VC6.0环境,引用了一个外部的Dll,MaskKey.dll的源码在MaskKey目录下,同样也可在VC 6.0下顺利编译成功。 // 屏蔽任意按键 void CTestMaskKeyDlg::OnButtonMaskKey() { ...
VC程序VC程序VC程序VC程序VC程序VC程序VC程序
在64位Windows 7操作系统上使用Visual C++ 6.0(简称VC6)进行程序开发时,可能会遇到一个常见的问题:当调试结束后,程序的进程无法正常退出,其窗口图标仍然显示在任务栏中,无法通过点击关闭按钮来结束程序运行。...
本程序为Visual C++来制作通用安装和卸载程序,使你拥有一个独具特色的通用安装和卸载程序。 安装程序处理包括: (1)将zip包应用程序文件解压到安装目录; (2)创建桌面和开始菜单快捷方式; (3)在注册表写入...
本篇文章将深入探讨如何通过命令行来实现这个功能,主要关注“用命令使程序退出的VC程序”这一主题。 首先,我们需要理解进程和线程的概念。进程是操作系统分配资源的基本单位,而线程则是执行程序的最小单元。在VC...
本主题主要探讨如何使用低级键盘钩子(Low-Level Keyboard Hook)来屏蔽特定的按键组合,如Win键、Alt+Tab键和Ctrl+Esc键。 低级键盘钩子(LLKH - Low-Level Keyboard Hook)是Windows钩子类型之一,它可以在键盘...
总之,ESC/POS 打印Domo (Vs2005 VC8) 是一个关于使用VC8和POS for .NET框架实现ESC/POS打印机控制的教程。通过学习和实践ESCPOS_Sample_forVC8中的代码,开发者可以掌握在.NET环境中与ESC/POS打印机通信的技巧,...
vc 程序崩溃的捕捉 VC 程序崩溃的捕捉是一个常见的问题,在编程过程中,程序崩溃是一个非常让人感到苦恼的问题。为了解决这个问题,我们需要了解程序崩溃的捕捉方法。 首先,在 Debug 信息中,我们可以选择 ...
在VC6.0环境下开发Windows应用程序时,我们经常会用到编辑框(Edit Control)作为用户输入数据的界面元素...在这个例子中,我们成功地实现了在VC6.0环境下屏蔽Edit控件内的小数点输入,以及阻止回车和Esc键的默认操作。
标签“VC6.0 64位Win7调试 无法直接退出”进一步明确了问题的关键点:主要涉及VC6.0在64位Windows 7平台上的调试体验,特别是程序退出机制的不正常。 至于压缩包子文件的文件名称7502200ee63e4a42bf95671b9a5fc9de...
实现ENTER键切换焦点的功能,主要涉及到CDialog派生类和消息映射机制。 1. **消息映射**:在VC++中,控件事件(如按键)的处理是通过消息映射机制完成的。你需要在`.h`头文件的类声明中定义消息映射宏,并在`.cpp`...
vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生程序序列号vc产生...
尽管有更多现代化的开发环境出现,如Visual Studio的更新版本,但许多开发者和初学者仍然钟情于使用Visual C++ 6.0(简称VC6)来编写C程序。这篇文章将介绍如何在VC6环境下创建、编译和运行C程序,以及如何利用其...