为什么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);
} 展开
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_LBUTTONDOWN)
{
if (pMsg->hwnd == m_editTime.m_hWnd && GetFocus() != (CWnd*)&m_editTime)
{
AfxMessageBox("Hello");
}
}
return CPAIBaseDialog::PreTranslateMessage(pMsg);
} 展开
展开全部
if (pMsg->hwnd == m_editTime.m_hWnd && GetFocus() != (CWnd*)&m_editTime)
鼠标第一次按下,触发一个WM_LBUTTONDOWN的消息. 弹出message框.
再次按下时,因为第二个判断GetFocus() != (CWnd*)不成立,不能再弹出消息框.
edit控件失去焦点,再次在edit控件中按下鼠标时,GetFocus() != (CWnd*)成立,能再次弹出消息框.
鼠标第一次按下,触发一个WM_LBUTTONDOWN的消息. 弹出message框.
再次按下时,因为第二个判断GetFocus() != (CWnd*)不成立,不能再弹出消息框.
edit控件失去焦点,再次在edit控件中按下鼠标时,GetFocus() != (CWnd*)成立,能再次弹出消息框.
追问
怎么做会失去焦点啊
追答
在字符输入框里, 光标在哪里,焦点就在哪里. 通常是鼠标单击哪里,焦点就在哪. edit输入框失去焦点,鼠标单机输入框以外的任意地方,都会导致光标不在edit输入框中,这就是edit输入框失去焦点了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是啊,只要有消息就会响应
更多追问追答
追问
//你可以试试 只能输出一次提示框
追答
第二次的时候光标已经在编辑框里面了,所以不会执行了,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
{
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询