Dialog中弹不出MessageBox
问题出在想做个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中弹开窗口不能最大化的问题?




