![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
У меня проект некий гибрид из DOC и Windows.
Как послать сообщение клавному окну типа SendMessage (hParent, ...), чтобы приложение перерисовало само себя. А может в обработчике сообщений не хватает какого сообщения. В чем проблема. Приложение корректно ведет себя с другими программами, если чужое окно двигается сверху, то моя программа себя перерисовывает. А если свое дочернее окно двигается, или закрывается, то главная программа об этом не знает. Добавлено @ 13:34 К сожалению изменить обработчик сообщений пока нельзя. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
путь попроще:
::InvalidateRect( hparent, &rect, 1 ); ::UpdateWindow( hparent ); поинтересней: ::RedrawWindow( hparent, .. ); |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Спасибо AndyY за помощь.
Попробовал 2 варианта: 1/////// ::InvalidateRect(hParent,NULL,FALSE); ::UpdateWindow( hParent ); 2////// RedrawWindow(hParent ,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW); Не помогает. Сообщаю подробности. Когда закрываю CFileDialog Перерисовывается все, кроме фона. А когда двигаю CFileDialog, то ничего не рисуется. Черный фон.. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
видать какая-то кривизна в обработке WM_PAINT или WM_ERASEBACKGRND
есть такие орлы... а изменить обработчик можно у любого окна. На это есть SetWindowLong( h, GWL_WNDPROC, my_proc ); восстановить можно также. а старый обработчик вызвать через CallWindowProc. для начала я перед CFIleDlg поставил бы wndproc которая заливает все белым на WM_PAINT - и посмотрел результат. Если, конечно, исходники основного окна не доступны. |
|||
|
||||
| Масяня |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Так что же это за "гибрид ДОС и Win32" такой? З.Ы. AndyY прав - WM_PAINT тебя спасет! |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Может имеется в виду консольная программа....
--------------------
|
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Дополнительная информация.
Возможно что, выражение "гибрид ДОС и Win32" не очень удачное. Программа раньше работала под ДОС. 5 лет назад ее переделали для Windows. Ну и не сделали как следует( не доделали). Некоторые модули для меня не доступны. Добавлено @ 19:08
Программа не консольная. Внешний вид у нее как у программ до Windows. Нету окон. Свое меню. |
|||
|
||||
| Масяня |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Если нету окон и нету меню.... это еще не значит что это ДОС-прога! Самый простой способ узнать это открыть эту прогу, например, в Блокноте и если там в начале "MZ" и "This program cannot be run in DOS mode.", то это конслольная прога.
Это сообщение отредактировал(а) Масяня - 31.5.2004, 19:23 |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Да.. У Харта вся книга описывается с консолькой.. А у него там полно всяких фигатеней с кучами, тридами, процессами, семафорами
--------------------
|
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Ув. Масяня, я ведь не говорил, что это ДОС- программа.
Это программа (IDraw) берет свое начало еще в доисторические времена... " IDraw "originally ran under the HTS (Higher Time Sharing ) operation System. The first "IDraw " run on the System 150. in 1980 SUN-Version IDraw was the first Unix implementation and introdused in june 1988 Эта программа появилась еще до PC. Консольные приложения здесь не причем. IDraw занимает все окно. Например, как игра в полноэкранном режиме. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Gorbatovsky
провели эксперимент с подменой WNDPROC? интересен результат |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Эксперимент с заливкой белым и с подменой WNDPROC пока не провел.
Изучаю как рисовать в полноэкранном режиме. |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
AndyY
Я провел небольшой эксперимент. Перед fileDlg.DoModal(); я вставил такой фрагмент
Получилось такое поведение. Когда вызываю диалог первый раз фрагмент эллипса появляется и закрашивается черным цветом. Второй раз Эллипс рисуется сверху меню. |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Дополнительная информция...
Когда открыто окно CFileDialog, то главное окно себе не перисовывает себя при перемещении других программ поверх. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
в общем-то это никак не связано с обработкой WM_PAINT...
а не может быть варианта, что WM_PAINT не обрабатывается вовсе, а все рисуется через GetDC в то время, когда на экране нужно что-нибудь изменить? по симптомам похоже... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |