鼠标按下按钮更换字体颜色//有种情况鼠标按下并没放开,在按钮别处放开字体不更换。
TRACKMOUSEEVENT 如何正确使用呀??????
BOOL loginDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message == WM_MOUSEMOVE)
{
if(pMsg->hwnd == button.m_hWnd)
{
RECT rect = {0};
rect.left = 20;
rect.right = 20;
if (!tracking)//tracking在构造函数里初始化为0.
{
TRACKMOUSEEVENT t = {
sizeof(TRACKMOUSEEVENT),
TME_LEAVE,
m_hWnd,
0
};
if (::_TrackMouseEvent(&t)){
tracking = true;
button.SetText(&rect,textfont,RGB(146,206,209),DT_LEFT|DT_VCENTER|DT_SINGLELINE);
//Invalidate();
}
}
}
if(pMsg->hwnd == button2.m_hWnd)
{
RECT rect = {0};
rect.left = 20;
rect.right = 20;
button2.SetText(&rect,textfont,RGB(146,206,209),DT_LEFT|DT_VCENTER|DT_SINGLELINE);
}
}
if(pMsg->message == WM_MOUSELEAVE)
{
if(pMsg->hwnd == button.m_hWnd)
{
RECT rect = {0};
rect.left = 20;
rect.right = 20;
tracking = false;
button.SetText(&rect,textfont,RGB(10,10,10),DT_LEFT|DT_VCENTER|DT_SINGLELINE);
}
if(pMsg->hwnd == button2.m_hWnd)
{
RECT rect = {0};
rect.left = 20;
rect.right = 20;
button2.SetText(&rect,textfont,RGB(10,10,10),DT_LEFT|DT_VCENTER|DT_SINGLELINE);
}
}
if(pMsg->message == WM_LBUTTONDOWN)
{
if (!tracking)
{
TRACKMOUSEEVENT t = {
sizeof(TRACKMOUSEEVENT),
TME_LEAVE,
m_hWnd,
0
};
if (::_TrackMouseEvent(&t)){
tracking = true;
Invalidate();
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
}
http://blog.csdn.net/yuanweihuayan/article/details/6831248