В MSDN, я прочитал этоВопросы о вовлечении без WM_PAINT сообщения
При рисовании без использования сообщения WM_PAINT, приложение обычно не отменяет окно. Вместо этого он рисует таким образом , что он может легко восстановить окно и удалить чертеж.
Что это значит? Becuase Я написал программу GIS, я хочу реализовать функцию «Zoom In», Мышь левая кнопка вниз и переместите мышь, чтобы нарисовать прямоугольник, она рисует прямоугольник, но прямоугольник покрывает карту, сначала я думаю, что это потому, что прямоугольник не прозрачен, то я использую AlphaBlend() для рисования прозрачного прямоугольника, это то же самое. Что мне делать?
LRESULT OnMouseMove(UINT nflags, CPoint point)
{
if (m_bZoomInMode)
{
m_curScreenPoint.x = point.x;
m_curScreenPoint.y = point.y;
HDC hdc = GetDC();
SelectObject(hdc, (HBRUSH)NULL_BRUSH);
Rectangle(hdc, m_startScreenPoint.x, m_startScreenPoint.y, point.x, point.y);
ReleaseDC(hdc);
return 0;
}
}
Комментарий в MSDN не связан с вашей проблемой. –
Трюк рисования прямоугольника выбора заключается в том, чтобы установить ручку рисования в режим XOR 'SetROP2 (hDC, R2_XORPEN);' и с полым щеткой. В первой ничьей будет рисовать прямоугольник, который инвертирует исходные пиксели экрана, вторая жеребьевка на том же прямоугольнике будет восстанавливать исходные пиксели. См. Этот пример: http://www.programmersheaven.com/mb/windows/104684/104684/drawing-a-selection-box-on-screen-with-the-mouse---example-code/ – mfc
Если вы используют MFC в своем проекте, вы можете просто использовать класс 'CRectTracker'. – mfc