VC 如何关闭afxmessagebox

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:54:47
我用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;
}
}
调试以上程序,点击回车键,弹出m

你可以去定一个变量来判断是第几次按下的回车键
然后去写相应代码是需要弹出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..手写的.不知道你能不能看懂

判断MessageBox是否打开状态,然后拦截