CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

在基于属性页的应用程序中,如何截获ESC和ENTER,使程序不被关闭。

楼主youli(蓝兔子)2001-01-10 17:29:00 在 VC/MFC / 基础类 提问

各种方法我都试过了,都不行。  
  如:  
  处理CPropertySheet:OnSysCommand(   UINT   nID,   LPARAM   lParam   )  
  屏蔽CPropertyPage:OnCancel()   、OnOK()  
   
  在某一页面有工作线程,我不想用户按ESC或ENTER退出程序。  
  但是按ESC或ENTER时,  
  CPropertySheet:OnSysCommand(   UINT   nID,   LPARAM   lParam   )  
  并未触发。(SC_CLOSE)    
   
  我重载CPropertyPage:OnCancel()   、OnOK()也不行。  
   
  我该如何做?  
   
   
  问题点数:20、回复次数:8Top

1 楼youli(蓝兔子)回复于 2001-01-10 17:39:00 得分 0

看似容易,  
   
  请大家快来帮忙!Top

2 楼danial(孤鸿)回复于 2001-01-10 17:47:00 得分 0

在OnCommand中截获你WM_DESTROY消息Top

3 楼youli(蓝兔子)回复于 2001-01-10 18:05:00 得分 0

屏蔽CPropertyPage:OnCancel()   、OnOK(),可它还是向它的父窗口CPropertySheet发送  
  WM_DESTROY,处理OnDestroy()不能阻止关闭窗口。  
   
  我如何才能使按ESC或ENTER不向CPropertySheet发送WM_DESTROY关闭程序。Top

4 楼xiner(叉叉)回复于 2001-01-10 18:24:00 得分 0

PEEKMESSAGE();Top

5 楼Robert2001(Robert2001)回复于 2001-01-11 02:52:00 得分 0

用HOOK    
        靠   这招真他妈的烂  
        Top

6 楼vcmfc(【痛苦的虫虫】)回复于 2001-01-11 09:35:00 得分 10

以下这招对点击关闭按钮无效,不过还是可以阻止按ESC或ENTER,代码如下:  
  BOOL   CMyPropertySheet::OnCommand(WPARAM   wParam,   LPARAM   lParam)    
  {  
  int   nCode   =   HIWORD(wParam);    
  if(nCode==0)  
  return   true;  
   
  return   CPropertySheet::OnCommand(wParam,   lParam);  
  }  
  Top

7 楼wishyouluck(common)回复于 2001-01-11 09:57:00 得分 10

可以试一试OVERRIDE   CPropertySheet::PreTranslateMessage(MSG   *pmsg):  
  当   pmsg->message==wm_keydown   时判断是不是,  
  pmsg->wparam==vk_return   ||   pmsg->wparam==vk_escape  
  在判断是不是你要屏蔽ESC和ENTER的页面,如果是就直接RETURN,相当于把消息拦截.  
  不过,我没有试过.只是个建议.Top

8 楼youli(蓝兔子)回复于 2001-01-11 10:00:00 得分 0

to:vcmfc  
  这样可以解决。一会儿就给你加分。  
   
  不过我还是有点疑惑,CPropertyPage:OnCancel()   、OnOK(),都对CPropertySheet作了些什么,即使屏蔽掉,ESC、ENTER还是要关闭CPropertySheet。  
   
  按ESC、ENTER,MFC到底都做了些什么。Top

相关问题

  • 请问如何实现属性页应用程序
  • 关于DOS应用程序中设置DOS窗口属性的问题
  • 求个能试用的web应用程序属性报表插件
  • 应用程序
  • 一个应用程序中用控件内嵌一个网页,如何在网页中通过脚本调用应用程序的方法、得到应用程序的属性
  • 有没有可以截获应用程序发出的SQL查询语句的工具?
  • 怎样通过我的程序设置一些属性来生成另一个应用程序?
  • 为何我重新生成应用程序后,就不能看到属性栏呢?
  • 怎么样才能使应用程序获取Word文档的各种属性值呢
  • vb.net应用程序!

关键词

  • 屏蔽
  • cpropertysheet
  • esc
  • cpropertypage
  • 关闭
  • oncancel
  • enter
  • onok
  • 程序
  • lparam

得分解答快速导航

  • 帖主:youli
  • vcmfc
  • wishyouluck

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo