MFC界面中,有些按鈕要實作單擊事件,還有些按鈕要回應ButtonDown和ButtonUp訊息?怎么寫
我把單擊默認的代碼改成回應ButtonDown和ButtonUp訊息了,如下
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN)
{
if(pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd)
{
// 按鈕按下
}
}
else if(pMsg->message == WM_LBUTTONUP)
{
if(pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd)
{
// 按鈕彈起
}
}
return CDialog::PreTranslateMessage(pMsg);
}
但怎么兩者都能實作呢?
uj5u.com熱心網友回復:
沒看懂
uj5u.com熱心網友回復:
判斷時延……uj5u.com熱心網友回復:
按下是一個事件,彈起是一個事件,這兩個事件就是相互獨立的。uj5u.com熱心網友回復:
笨辦法定時器判斷按鈕狀態uj5u.com熱心網友回復:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
CRect rectA,rectB,rectC;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rectA);
GetDlgItem(IDC_BUTTON2)->GetWindowRect(&rectB);
GetDlgItem(IDC_BUTTON3)->GetWindowRect(&rectC);
if(pMsg->message == WM_LBUTTONDOWN)
{
if(rectA.PtInRect(pMsg->pt))
{
MessageBox(_T("A"));
}
else if(rectB.PtInRect(pMsg->pt))
{
m_strPopText = _T("B");
}
else if(rectC.PtInRect(pMsg->pt))
{
m_strPopText = _T("C");
}
}
else if(pMsg->message == WM_LBUTTONUP)
{
if(rectA.PtInRect(pMsg->pt))
{
;
}
else if(rectB.PtInRect(pMsg->pt))
{
MessageBox(m_strPopText);
}
else if(rectC.PtInRect(pMsg->pt))
{
MessageBox(m_strPopText);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86848.html
標籤:界面
上一篇:萌新求問——MFC多出來了很多類
