2015-04-28 3 views
0

Я пишу функцию переопределения OnPaint() в своем собственном диалоге, я не знаю, как передать параметры этой функции, она называется автоматической. И я также хочу знать, что я использовал PictureControl в своем диалоговом окне и загружал файл с диска с помощью моей собственной функции (BitmapShow (UINT ctrlID, CString filePath)), должен ли я писать код загрузки изображения в функцию переопределения OnPaint() ? или скопировать этот сегмент кода в OnPaint()?О MFC, как передать параметры функции OnPaint

+0

Ну смотря на официальном документе я вижу 'защищен: виртуальных недействительного OnPaint ( \t PaintEventArgs^е )' Я считаю, что это аргумент как раз там – meneldal

+0

@meneldal - Это не функция MFC и не C++ –

+0

Ну, это ошибка на веб-сайте MSDN, потому что они перечисляют тот, который находится на вкладке «C++» – meneldal

ответ

3

Вы не можете изменить определение функции OnPaint. Он вызывается только в ответ на автоматическое сообщение WM_PAINT. Вы можете и должны хранить любую дополнительную информацию, необходимую вашей функции OnPaint как переменные-члены, а не как параметры.

Чтобы нарисовать картинку на изображении, вы должны переопределить OnPaint элемента управления изображением, а не диалог. Это делается в классе, который вы получаете из CStatic.

+0

Хорошо, спасибо вам большое! Вы имеете в виду, что я должен написать код загрузки изображения в OnPaint()? Моя проблема в том, что я могу загрузить изображение в PictureControl с помощью моей собственной функции, но если что-то еще покрывает его, изображение исчезнет. – Bing

+0

Да, проблема исчезновения - это то, почему вся картина должна выполняться в функциях OnPaint. Но есть отдельный OnPaint для диалога и для окна с картинкой. –

+0

Как добавить OnPaint PictureControl? Использовать мастер классов? – Bing

Смежные вопросы