Member 14594285 Ответов: 1

Измените цвет моего диалогового окна, когда я щелкаю мышью


Я нашел в интернете, чтобы изменить цвет:

Add OnCtlColor and write this code

  //hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); //Commet it and add
  hbr = m_brush;



да, но он использовал сообщение, но у меня уже есть мое сообщение:

void CMFCApplication7Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{


поэтому я не знаю, что я могу написать внутри события OnLButtonDown

Что я уже пробовал:

Я искал в интернете, но там нет никакого способа

Member 14594285

Я думаю, что должен написать нечто подобное:


BOOL CMFCApplication7Dlg::OnEraseBkgnd(CDC* pDC)
{
if (afx_msg == WM_MOUSEMOVE)
{
Crect тогда прямоугольник;
GetClientRect(&rect);
CBrush myBrush(RGB(255, 255, 255)); // цвет фона диалога
CBrush *pOld = pDC->SelectObject(&myBrush);
BOOL bRes = pDC->PatBlt(0, 0, rect.Width(), rect.Высота(), PATCOPY);
pDC->SelectObject(pOld); // восстановление старой кисти
возвращение Брес;
возврат CDialogEx::OnEraseBkgnd(pDC);
}

Вы не могли бы мне помочь?

Member 14594285

я пытался :

BOOL CMFCApplication7Dlg::OnEraseBkgnd(CDC* pDC)
{
MSG* pMsg = новый MSG;
// TODO: добавьте сюда свой код обработчика сообщений и/или вызовите default
if (pMsg->message == WM_LBUTTONDOWN)
{
Crect тогда прямоугольник;
GetClientRect(&rect);
CBrush myBrush(RGB(255, 255, 255)); // цвет фона диалога
CBrush *pOld = pDC->SelectObject(&myBrush);
BOOL bRes = pDC->PatBlt(0, 0, rect.Width(), rect.Высота(), PATCOPY);
pDC->SelectObject(pOld); // восстановление старой кисти
возвращение Брес;
возврат CDialogEx::OnEraseBkgnd(pDC);
}
}

но это не работает..диалог открыть белый, прежде чем я нажму кнопку мыши

1 Ответов

Рейтинг:
2

Rick York

Существуют два шага, чтобы этого делать. Во-первых, вы пишете код для OnEraseBkgnd (), чтобы нарисовать фон диалога, как вы это сделали. Во-вторых, вы должны заставить его быть нарисованным. Для этого вы можете вызвать Invalidate() и передать true, чтобы вызвать перерисовку фона.

В своем коде рисования вы должны вызвать GetStockObject и передать ему WHITE_BRUSH. Есть несколько "стоковых" объектов, которые можно использовать, поэтому вам не нужно создавать их самостоятельно. Существует несколько способов нарисовать сплошной цветной прямоугольник. PatBlt-это один из способов, но я никогда им не пользовался. Rectangle () - это тот, который я обычно использую.