MFC - глобальный доступ к DocumentView OnDraw (CDC * pDC) - PullRequest
1 голос
/ 25 февраля 2012

У меня есть приложение MFC SDI, и я хочу получить доступ к области документа из отдельного диалогового окна, чтобы что-то нарисовать на нем.Вот что я хочу получить:

void CProjView :: OnDraw (CDC * pDC)

или, что еще лучше, я хотел бы нарисовать вид документа непосредственно из диалогового окна.Как я могу это сделать?

1 Ответ

3 голосов
/ 27 февраля 2012

Если вы хотите нарисовать что-то в документе, чем, вероятно, должно быть в вашем документе.Получите указатель на ваш класс CDocument и вызовите CDocument :: UpdateAllViews .Это в свою очередь назовет CView::OnUpdate.Там вы установите флаг и позвоните Invalidate().OnDraw() теперь будет перерисовывать экран с новым объектом, так как вы устанавливаете флаг, сообщающий ему об этом.

Есть и другие способы, где вы можете просто захватить контекст устройства клиентской области и начать рисовать, нопроблема в том, что если вы свернете окно и вернете его обратно, новая картина будет потеряна.Фактически все, что вы делаете вне функции OnDraw (), будет потеряно.Поэтому вы должны делать все свои рисунки в функции OnDraw (), и выше описано, как это делать систематически, используя архитектуру doc / view.

...