Как сделать первичную отрисовку в окне в MFC в C++?

332
08 декабря 2017, 04:35

Здравствуйте!

У меня есть проект в MFC. При нажатии некоторой кнопки он открывает окно:

SomeWindow.DoModal();

Разумеется, SomeWindow - это класс обработчик некоторого окна, которое я создал в диалоге. Данный класс у меня унаследован от CDialogEx. Мне требуется, чтобы при открытии этого окна отрисовывалась некоторая картинка. Отрисовывание картинки я заключил в функцию:

void SomeWindow::ToStart();

Когда я эту функцию всовывал в конструктор, приложение не запускалось. Когда я вызвал эту функцию как-то так:

SomeWindow.DoModal();
SomeWindow.ToStart();

Тоже приходила ошибка.

Вопрос:

Как отрисовать первоначальную картинку нового окна? В какое место программы воткнуть функцию ToStart(), чтобы всё заработало?

Answer 1

Я уже давно ничего не писал в MFC, но судя по моему старому проекту нужно в класс Вашего диалога добавить функции-обработчики событий WM_PAINT и WM_SIZE (при необходимости) (точное название событий тоже не помню, но должны быть функции типа OnPaint() и OnSize()). И вашу ToStart() соответственно, вызывать из OnPaint(). И еще, я бы этой функции (ToStart()) добавил входной параметр - указатель на DC (кажется, класса CDC), т.к. в OnPaint() у Вас будет объектом контекста CPaintDC, а в других местах - кажется, CClientDC.

READ ALSO
деревья или массив?

деревья или массив?

В каких случаях возникают преимущества структур данных, основанных на массивах, перед теми, что основаны на деревьях, кроме индексации?

304
Вставить “ма” после каждого слога в произвольном слове

Вставить “ма” после каждого слога в произвольном слове

ЗдравствуйтеНужна помощь в задании

222
О типах библиотек debug, release, debug dll, release dll

О типах библиотек debug, release, debug dll, release dll

Хочу основательно разобраться в вопросе о типах библиотек и параметрах /MT (статическая), /MD (dll), /MTd (статическая дебаг) и /MDd (дебаг dll)То, чем...

295