为什么WM_LBUTTONDOWN只能判断一次啊?//只能输出一次提示框?

BOOLCPeriodCheckDlg::PreTranslateMessage(MSG*pMsg){//TODO:在此添加专用代码和/或调用基类if(pMsg->mes... BOOL CPeriodCheckDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_LBUTTONDOWN)
{
if (pMsg->hwnd == m_editTime.m_hWnd && GetFocus() != (CWnd*)&m_editTime)
{
AfxMessageBox("Hello");
}

}
return CPAIBaseDialog::PreTranslateMessage(pMsg);
}
展开
 我来答
GreaterHeat
2012-09-20
知道答主
回答量:13
采纳率:0%
帮助的人:18万
展开全部
if (pMsg->hwnd == m_editTime.m_hWnd && GetFocus() != (CWnd*)&m_editTime)
鼠标第一次按下,触发一个WM_LBUTTONDOWN的消息. 弹出message框.
再次按下时,因为第二个判断GetFocus() != (CWnd*)不成立,不能再弹出消息框.
edit控件失去焦点,再次在edit控件中按下鼠标时,GetFocus() != (CWnd*)成立,能再次弹出消息框.
追问
怎么做会失去焦点啊
追答
在字符输入框里, 光标在哪里,焦点就在哪里. 通常是鼠标单击哪里,焦点就在哪. edit输入框失去焦点,鼠标单机输入框以外的任意地方,都会导致光标不在edit输入框中,这就是edit输入框失去焦点了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
try_ok
2012-09-18 · TA获得超过211个赞
知道小有建树答主
回答量:423
采纳率:0%
帮助的人:262万
展开全部
不是啊,只要有消息就会响应
更多追问追答
追问
//你可以试试 只能输出一次提示框
追答
第二次的时候光标已经在编辑框里面了,所以不会执行了,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
intehel
2012-09-21 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1773万
展开全部
BOOL CPeriodCheckDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDBLCLK && pMsg->hwnd == m_editTime.m_hWnd)
pMsg->message = WM_LBUTTONDOWN;
if(pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == m_editTime.m_hWnd)
{
m_editTime.SetFocus();
PostMessage(WM_USER,0,0);
return TRUE;
}
else if(pMsg->message == WM_USER)
{
int start,end,length = m_editTime.GetWindowTextLength();
m_editTime.GetSel(start,end);
if(end == length)
end = 0;
m_editTime.SetSel(end,end+2);
}
return CDialog::PreTranslateMessage(pMsg);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式