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

Dialog中弹不出MessageBox

楼主hakuna(松鼠)2001-11-25 12:02:54 在 VC/MFC / 基础类 提问

问题出在想做个Calculator玩玩,没想捕捉不到OnChar。  
   
  目标:  
  要支持键盘控制。(按数字1就能实现Click   Button   1)  
   
  设计中的调试:  
  捕捉OnChar,可是发现抓不到。(OnChar写在Dialog的cpp中)  
   
  调试代码:  
  void   CCalculatorDlg::OnChar(UINT   nChar,   UINT   nRepCnt,   UINT   nFlags)    
  {  
      //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
      char   buffer[50];  
      sprintf(buffer,"Format:   %d",   (int)nChar);  
      MessageBox(buffer);  
       
      CDialog::OnChar(nChar,   nRepCnt,   nFlags);  
  }  
  问题点数:40、回复次数:15Top

1 楼A_Qiao()回复于 2001-11-25 12:04:53 得分 0

关注Top

2 楼cat_dog(东方软件)回复于 2001-11-25 12:05:13 得分 0

你的Dialog中有其它的小控件,这样是不行了。Top

3 楼hakuna(松鼠)回复于 2001-11-25 12:09:02 得分 0

能进一步阐述一下吗?  
  到底是捕捉不到WM_CHAR,还是弹不出MessageBox?Top

4 楼DeadWolf(三角小眼睛又邪又媚又笨又呆又奸又诈又色)回复于 2001-11-25 12:28:46 得分 0

重载窗体的PreTranslateMessage()   处理WM_CHARTop

5 楼hakuna(松鼠)回复于 2001-11-25 12:51:33 得分 0

还是不明白Top

6 楼yheysj(vc_help)回复于 2001-11-25 12:58:35 得分 0

up!!  
  Top

7 楼thomas269(Thomas)回复于 2001-11-25 13:08:44 得分 0

因為你的Dialog中有其他的控件,   所以Focus在這些控件的其中一個,   所以OnChar發生在它身上,   它的Parent(即你的Dialog)就什麼也收不到了Top

8 楼111222(www.111222.cn)回复于 2001-11-25 13:15:20 得分 15

Dialog的Onchar是处理不到键盘消息的。  
  你得虫灾PreTranslateMessage处理wm_char  
  另外DIALOG根本处理不到WM_IME_CHAR  
   
  为什么,我也不知道,好象是给IsDialogMessage过滤掉了Top

9 楼hakuna(松鼠)回复于 2001-11-25 17:48:39 得分 0

我要是‘非逮到键盘不可’,是否可以考虑用系统调用(API里的相关功能)?  
  还有,111222()能否给一小段代码点一点?Top

10 楼hakuna(松鼠)回复于 2001-11-25 21:46:30 得分 0

还有,我想手动顶替按钮发个消息给ON_BUTTON函数:  
  实现功能是   BUTTON   的   BN_CLICKED。(让函数认为这个按钮被按过了)Top

11 楼hakuna(松鼠)回复于 2001-11-25 21:53:40 得分 0

BOOL   CCalculatorDlg::PreTranslateMessage(MSG*   pMsg)    
  {  
      if(pMsg->message==WM_CHAR)  
      {     if   (pMsg->wParam>=48   &&   pMsg->wParam<=57)   //键盘的0~9的十进制  
                  switch   (pMsg->wParam)  
                  {  
                    .....  
                    case   49:     PostMessage(IDC_BUTTON1,   BN_CLICKED);   break;  
                    .....  
                    }  
            if   (....)     //键盘的“   +   -   *   /   ”之类  
        }  
  }Top

12 楼wavecheng(CryingOwl)回复于 2001-11-25 21:58:31 得分 10

  有什么问题吗?Top

13 楼hakuna(松鼠)回复于 2001-11-25 21:58:48 得分 0

为什么上面的消息发的不对?在  
  CCalculatorDlg::ON_BUTTON1()  
  中检测不到事件的发生。Top

14 楼thomas269(Thomas)回复于 2001-11-26 19:16:22 得分 15

SendDlgItemMessage(IDC_BUTTON1,   WM_COMMAND,   (BN_CLICKED   <<   16)   +   IDC_BUTTON1,   0)Top

15 楼thomas269(Thomas)回复于 2001-11-26 19:19:27 得分 0

SendDlgItemMessage(IDC_BUTTON1,   WM_COMMAND,   (BN_CLICKED   <<   16)   +   IDC_BUTTON1,   0)Top

相关问题

  • 在webApplication中弹不出MessageBox()?
  • 怎样在aspx中弹出一个MessageBox(用C#,不要Javascript)?
  • 如何截获dll中弹出的messagebox?
  • 怎样获得IE网页中弹出的MESSAGEBOX的句柄???
  • 可以在ASP。NET网页程序中弹出MESSAGEBOX吗
  • 如何解决applet中弹出的Dialog的问题?
  • 如何在Asp.net中弹出MessageBox,显示Yes/No,并且取得返回值?
  • 新手上路,如何在ASP.net 中弹出警告 。 如MessageBox(“输入输出错误”,“提示”);
  • 如何用API得到另外一个程序中弹出窗口(Messagebox)里的文本?
  • 关于IE5.5或IE6.0中弹开窗口不能最大化的问题?

关键词

  • 键盘
  • 控件
  • 消息
  • onchar
  • ccalculatordlg
  • dialog
  • pmsg
  • messagebox
  • pretranslatemessage
  • 捕捉

得分解答快速导航

  • 帖主:hakuna
  • 111222
  • wavecheng
  • thomas269

相关链接

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

广告也精彩

反馈

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