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 兄弟说的,若要回车和鼠标混合操作不就乱了吗?
请看我的设计:
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关闭后会新弹出。
说的再简单些就是在百度中用回车代替鼠标点击“百度一下”,难道各位仁兄平时就没遇到这种情况吗? 展开
2个回答
展开全部
你可以去定一个变量来判断是第几次按下的回车键
然后去写相应代码是需要弹出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..手写的.不知道你能不能看懂
然后去写相应代码是需要弹出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..手写的.不知道你能不能看懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询