_TrackMouseEvent()を使ってOnMouseLeave()に飛ぶように設定する。
Cソース
BEGIN_MESSAGE_MAP(CImageButton, CButton) //{{AFX_MSG_MAP(CImageButton) … ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave) //}}AFX_MSG_MAP END_MESSAGE_MAP()
void CImageButton::OnMouseMove(UINT nFlags, CPoint point) { CRect rect; GetClientRect(rect); if(PtInRect(rect, point)){ // マウス監視開始(LEAVEイベント) TRACKMOUSEEVENT tme; tme.cbSize = sizeof(tme); tme.dwFlags = TME_LEAVE; tme.hwndTrack = this->m_hWnd; _TrackMouseEvent(&tme); InvalidateRect(rect); // 描画 } CButton::OnMouseMove(nFlags, point); }
LRESULT CImageButton::OnMouseLeave(WPARAM wparam, LPARAM lparam){ … }
ヘッダ
// 生成されたメッセージ マップ関数 protected: //{{AFX_MSG(CImgButton) … afx_msg LRESULT OnMouseLeave(WPARAM wparam, LPARAM lparam); //}}AFX_MSG
ネタ元