Событие наведения мыши MFC C++ CButton ⇐ C++
-
Anonymous
Событие наведения мыши MFC C++ CButton
BEGIN_MESSAGE_MAP(CPQVDirect2DControlsDlg, CDialogEx) ON_WM_TIMER() ON_WM_PAINT() ON_WM_DRAWITEM() ON_WM_ERASEBKGND() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CPQVDirect2DControlsDlg::OnBnClickedTestButton) ON_BN_CLICKED(IDC_CHECK1, &CPQVDirect2DControlsDlg::OnBnClickedTestCheckbox) ON_BN_CLICKED(IDOK, &CPQVDirect2DControlsDlg::OnBnClickedOk) ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CPQVDirect2DControlsDlg::OnNMCustomdrawSlider1) ON_BN_CLICKED(IDC_BUTTON3, &CPQVDirect2DControlsDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON2, &CPQVDirect2DControlsDlg::OnBnClickedButton2) ON_WM_MOUSEMOVE() // Я ЭТО ДОБАВИЛ END_MESSAGE_MAP() void CPQVDirect2DControlsDlg::OnMouseMove (UINT nFlags, точка CPoint) { CRect прямой; CButton* pButton = static_cast(GetDlgItem(IDC_BUTTON1)); // Замените IDC_MY_BUTTON на идентификатор вашей кнопки // Проверяем, находится ли указатель мыши над кнопкой if (pButton != nullptr && pButton->GetSafeHwnd() != nullptr) { pButton->GetClientRect(&rect); pButton->ScreenToClient(&point); если (rect.PtInRect(точка)) { // Изменяем цвет кнопки при наведении на нее курсора мыши интервал я = 10; pButton->Инвалидировать(); } еще { // Возвращаемся к цвету по умолчанию, когда мышь уходит интервал я = 20; pButton->Инвалидировать(); } } CDialogEx::OnMouseMove(nFlags, точка); } Моя точка останова должна находиться на int i = 10;, но она всегда доходила до int i = 20; даже моя мышь на IDC_BUTTON1. Может кто-нибудь помочь, как изменить границу кнопки при наведении курсора мыши? Я новичок в MFC C++
BEGIN_MESSAGE_MAP(CPQVDirect2DControlsDlg, CDialogEx) ON_WM_TIMER() ON_WM_PAINT() ON_WM_DRAWITEM() ON_WM_ERASEBKGND() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CPQVDirect2DControlsDlg::OnBnClickedTestButton) ON_BN_CLICKED(IDC_CHECK1, &CPQVDirect2DControlsDlg::OnBnClickedTestCheckbox) ON_BN_CLICKED(IDOK, &CPQVDirect2DControlsDlg::OnBnClickedOk) ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CPQVDirect2DControlsDlg::OnNMCustomdrawSlider1) ON_BN_CLICKED(IDC_BUTTON3, &CPQVDirect2DControlsDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON2, &CPQVDirect2DControlsDlg::OnBnClickedButton2) ON_WM_MOUSEMOVE() // Я ЭТО ДОБАВИЛ END_MESSAGE_MAP() void CPQVDirect2DControlsDlg::OnMouseMove (UINT nFlags, точка CPoint) { CRect прямой; CButton* pButton = static_cast(GetDlgItem(IDC_BUTTON1)); // Замените IDC_MY_BUTTON на идентификатор вашей кнопки // Проверяем, находится ли указатель мыши над кнопкой if (pButton != nullptr && pButton->GetSafeHwnd() != nullptr) { pButton->GetClientRect(&rect); pButton->ScreenToClient(&point); если (rect.PtInRect(точка)) { // Изменяем цвет кнопки при наведении на нее курсора мыши интервал я = 10; pButton->Инвалидировать(); } еще { // Возвращаемся к цвету по умолчанию, когда мышь уходит интервал я = 20; pButton->Инвалидировать(); } } CDialogEx::OnMouseMove(nFlags, точка); } Моя точка останова должна находиться на int i = 10;, но она всегда доходила до int i = 20; даже моя мышь на IDC_BUTTON1. Может кто-нибудь помочь, как изменить границу кнопки при наведении курсора мыши? Я новичок в MFC C++
Мобильная версия