![]() |
|
|
![]()
|
|
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Доброго дня!
Проблема такая: есть диалог, который выводит картинку. Когда приложение стартует, на диалоге появляется текст "No Frame", который говорит о том, что картинка не загружена. Этот диалог немодальный и принадлежит главному окну приложения. Когда главное окно создаётся, в обработчике OnCreate( ) создаётся также этот диалог, и после создания вызывается метод RedrawWindow( ), чтобы его обновить. Результат первого обновления - вместо текста - белый прямоугольник. Когда происходит второе обновление, например, если изменить размер окна, то текст нормально рисуется. Что это такое, даже не знаю, как это исправлять ?? |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
код OnPaint?
|
|||
|
||||
| ANTON_AL |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
m_BackBuffer - это обвёртка вокруг класса CImage, представляет задний буффер. Device Context получается из объекта CImage, который находится внутри объекта m_BackBuffer методом BackBuffer::BeginUsing( );
m_pImg - это указатель на картинку, которая должна прорисовываться в диалоге, если он нулевой, то рисуем текст "No Frame" ( С которым и есть проблема ) В конце обработчика OnPaint уничтожаем полученный Device Context методом BackBuffer::EndUsing( )
Это сообщение отредактировал(а) ANTON_AL - 14.2.2008, 16:12 |
||||||
|
|||||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Код нормальный, только одно предположение - не создается битмап для отрисовки текста "No Frame". Например, метод create вызывается только из OnPaint, но изменения размеров окна не происходит и соответственно битмап не создается. Так что не помешало бы привести код создания битмапа.
Замечания по коду: afx_msg обычно ставится только в объявлении. В моем доме попрошу не выражаться. //Handle frame resizing. If main window was resized, back buffer will //also be resized Лучше поместить в OnSize, скобочки там не нужны. |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Разобрался. Оказывается, что текст прорисовывался, но он был белым на белом фоне текста. Надо было явно установить цвет фона теста методом CDC::SetBkColor(...)
Это сообщение отредактировал(а) ANTON_AL - 15.2.2008, 12:20 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |