我使用PreTranslateMessage 进行 按钮 按下和弹起的函数响应
但是现在发现一个问题
就是 按钮 多按下弹起几次 按钮 就处于一种状态 就是 按下弹起 失效 但是 鼠标划过那里就 有按钮按下凹下的 (此时 按下 弹起 函数没有响应) 我使用 显示 桌面 快捷键 刷新一下 回来就好了
再按下去还是老问题。。寻求解决办法 附 代码:BOOL AutoFocus::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
AutoFocus *mainDialog = (AutoFocus *)GetParent();
// static flag = TRUE; if (pMsg->message == WM_LBUTTONDOWN &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomIn))->m_hWnd)
{
GetDlgItem(IDC_ZoomIn)->SetFocus(); pCflyUSB->ZMInOut(ZOOM_IN);
return TRUE;
}
if (pMsg->message == WM_LBUTTONUP &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomIn))->m_hWnd)
{
// MessageBox(",,333,"); pCflyUSB->ZMInOut(ZOOM_STOP); return TRUE;
}
if (pMsg->message == WM_LBUTTONDOWN &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomOut))->m_hWnd)
{
GetDlgItem(IDC_ZoomOut)->SetFocus();
pCflyUSB->ZMInOut(ZOOM_OUT);
return TRUE;
}
if (pMsg->message == WM_LBUTTONUP &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomOut))->m_hWnd)
{
pCflyUSB->ZMInOut(ZOOM_STOP);
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
但是现在发现一个问题
就是 按钮 多按下弹起几次 按钮 就处于一种状态 就是 按下弹起 失效 但是 鼠标划过那里就 有按钮按下凹下的 (此时 按下 弹起 函数没有响应) 我使用 显示 桌面 快捷键 刷新一下 回来就好了
再按下去还是老问题。。寻求解决办法 附 代码:BOOL AutoFocus::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
AutoFocus *mainDialog = (AutoFocus *)GetParent();
// static flag = TRUE; if (pMsg->message == WM_LBUTTONDOWN &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomIn))->m_hWnd)
{
GetDlgItem(IDC_ZoomIn)->SetFocus(); pCflyUSB->ZMInOut(ZOOM_IN);
return TRUE;
}
if (pMsg->message == WM_LBUTTONUP &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomIn))->m_hWnd)
{
// MessageBox(",,333,"); pCflyUSB->ZMInOut(ZOOM_STOP); return TRUE;
}
if (pMsg->message == WM_LBUTTONDOWN &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomOut))->m_hWnd)
{
GetDlgItem(IDC_ZoomOut)->SetFocus();
pCflyUSB->ZMInOut(ZOOM_OUT);
return TRUE;
}
if (pMsg->message == WM_LBUTTONUP &&pMsg->hwnd == ((CButton*)this->GetDlgItem(IDC_ZoomOut))->m_hWnd)
{
pCflyUSB->ZMInOut(ZOOM_STOP);
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
里面,在这里面处理可能会有问题.放到ONLBUTTONDOWN和ONLBUTTONUP里面判断啊.
你处理WM_LBUTTONDOWN的时候直接return TRUE了,基类的OnLButtonDown没有调到,导致按钮行为不正常
还有我有两个按键 都要 按下 弹起 要如何判断 获得的句柄ID??
void MyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// if((CButton*)this->GetDlgItem(IDC_ZoomIn))
MessageBox("up"); CButton::OnLButtonDown(nFlags, point);
}void MyButton::OnLButtonUp(UINT nFlags, CPoint point)
{ CButton::OnLButtonUp(nFlags, point);
}
然后在LButtonDown和LButtonUp中根据m_nButtonID的值进行操作。
但是获得当前ID 用哪个函数
int buID;
MSG* pMsg;
buID= GetWindowLong(pMsg->hwnd,GWL_ID);
if(buID == 1072)
{
ww++;
}
错误。。
在按钮外面点击应该不会响应按钮点击事件的,一定是你程序中写错什么东西了。