VC 如何关闭afxmessagebox 25

我用VC2005创建了一个对话框程序,并添加了回车响应函数。当激活某一控件,点回车键,通过AfxmessageBox()弹出提示对话框。这时点回车后又会重新弹出messa... 我用VC2005创建了一个对话框程序,并添加了回车响应函数。当激活某一控件,点回车键,通过AfxmessageBox()弹出提示对话框。这时点回车后又会重新弹出messagebox,只能通过鼠标关闭该messagebox对话框。请问高手怎么才能实现点击回车键时也能关闭messagebox?
PE_luck 兄弟说的,若要回车和鼠标混合操作不就乱了吗?
请看我的设计:
1、添加一个edit control(IDC_EDIT_NUM),一个button(IDC_BTN_NUM)
2、添加button事件:
OnBtnNum()
{
AfxMessageBox("hello");
}
3、添加PreTranslateMessage(MSG* pMsg)消息,代码如下:
PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYFIRST<=pMsg->message&&WM_KEYLAST>=pMsg->message)
if(pMsg->wParam==VK_RETURN)
{

HWND hWnd=::GetFocus();
int iID=::GetDlgCtrlID(hWnd);
switch(iID)
{
case IDC_EDIT_NUM:
case IDC_BTN_NUM:
OnBtnNum();
break;
case IDC_EDIT_IDNUM:
...
...
...

}
return true;
}
}
调试以上程序,点击回车键,弹出messagebox消息对话框。这时只能用鼠标关闭messagebox,若用回车键关闭,messagebox关闭后会新弹出。
说的再简单些就是在百度中用回车代替鼠标点击“百度一下”,难道各位仁兄平时就没遇到这种情况吗?
展开
 我来答
PE_luck
2008-11-26 · TA获得超过1304个赞
知道小有建树答主
回答量:905
采纳率:0%
帮助的人:935万
展开全部
你可以去定一个变量来判断是第几次按下的回车键
然后去写相应代码是需要弹出box 还是 需要关闭box

int CtrlID=0;//程序集变量 用来比较当前焦点

然后....
if(pMsg->wParam==VK_RETURN)
{
HWND hWnd=::GetFocus();
int iID=::GetDlgCtrlID(hWnd);
if(iID!= CtrlID) //当前控件和上一控件是不是为同一个
{
OnBtnNum(); //是就弹
CtrlID=iID; //上一个控件等于当前控件
}else
return; //如果是的话什么也不做

)

}

大概就是这样子... 这台机子没装vc..手写的.不知道你能不能看懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
进取的有胜哥
2008-11-26 · TA获得超过203个赞
知道小有建树答主
回答量:563
采纳率:0%
帮助的人:347万
展开全部
判断MessageBox是否打开状态,然后拦截
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式