OwnerDrawn ボタンをいくつか作成する CWnd からウィンドウを派生させました。ボタンは CButton から派生しています。
ユーザーがボタンにカーソルを合わせているときに、ボタンの BackgroundColor に変更したいと思います。
したがって、OnMouseHover() および OnMouseLeave() メッセージが送信されることを既に実装しています。
BEGIN_MESSAGE_MAP(CFooterButton, CButton)
ON_WM_MOUSEHOVER()
ON_WM_MOUSEMOVE()
ON_WM_MOUSELEAVE()
END_MESSAGE_MAP()
void CFooterButton::OnMouseMove(UINT nFlags, CPoint point)
{
//start tracking of Hover and Leave Event
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_HOVER | TME_LEAVE;
tme.hwndTrack = m_hWnd;
tme.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&tme);
CButton::OnMouseMove(nFlags, point);
}
void CFooterButton::OnMouseHover(UINT nFlags, CPoint point)
{
HDC hdc = *GetWindowDC();
SetBkColor(hdc,RGB(54, 125, 184));
CButton::OnMouseHover(nFlags, point);
}
Debugger と Spy では、コードが呼び出されていることがわかりますが、何も起こりません。私はMFC/c++に比較的慣れていないので、DCを正しく使用していないと思います..なぜそれが機能しないのか、どうすれば修正できるのか説明してもらえますか?