Параметры WTL RedrawWindow

Я новичок в WTL C ++. Я действительно запутался в параметрах, которые входят в функцию RedrawWindows специально для флагов. Я просто пытаюсь обновить окно каждый раз, когда рисую линию, но я не совсем понимаю, как

LRESULT  CDrawView::OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
int xPos= GET_X_LPARAM(lParam);
int yPos = GET_Y_LPARAM(lParam);
end.X = xPos;
end.Y = yPos;

Pen pen(Color(0, 0, 255));
m_GraphicsImage.DrawLine(&pen, start.X, start.Y, end.X, end.Y);

Я пытаюсь вызвать RedrawWindow здесь,

RedrawWIndow(NULL,NULL, NULL, RDW_INTERNALPAINT)

Поэтому каждый раз, когда я отпускаю левую кнопку мыши, окно обновляется. Мне действительно трудно понять параметры, которые входят в функцию перерисовки. Я попытался положить их все в ноль минус последний, но Visual Studio говорит, что функция не принимает 4 параметра, хотя я читал MSDN Microsoft …

0

Решение

Вы не называете глобальным RedrawWindow.

Вы вызываете функцию-член CWindow::RedrawWindow, который принимает 3 параметра.

BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL,
HRGN hRgnUpdate = NULL,
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE
); throw()

Редактировать:
Все эти три параметра имеют аргументы по умолчанию, это означает, что они не должны быть снабжены RedrawWindow() один должен работать.

0

Другие решения

Это не тот способ, которым вы должны пользоваться, и вы должны использовать API. Ваш обработчик кнопки мыши должен вызвать Invalidate() или же InvalidateRect с определенной частью окна вы помечаете как нуждающиеся в обновлении. Ваше окно получит WM_PAINT событие при первом удобстве ОС, и ваш обработчик рисования нарисует линию.

RedrawWindow может сработать на этот раз, но, вероятно, станет основой следующей проблемы очень скоро, потому что вы уже на неправильном пути.

0

По вопросам рекламы [email protected]