![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| yngwie19 |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Здравствуйте уважаемые программисты у меня к Вам есть несколько простых но очень для меня важных вопроса.
1. В некоторых книгах пишут функицию UpdateWindow() сразу после функции CreateWindow(), объясняя это тем что при создании окна оно пока невалидно и поэтому нужно его перерисовать. Однако в других книгах говорят что функция WM_PAINT вызывается сама после создания окна. Дак нужно ли нам принудительно посылать сообщение о перерисовке или это сделает за нас сама винда? 2. Иногда встречаю в книгах, что после отработки Message loop пишут оператор:
а иногда
насколько Я знаю, Message loop завершается когда он из очерtlи получает сообщение WM_QUIT. Дак чтоже хранится в параметре msg.wParam, и есть ли разница между первым и вторым вариантом? 3. в структуре WNDCLASSEX есть параметр
зачем он нужен и чем он отличается от
|
||||||||
|
|||||||||
| yeputons |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 1.4.2009 Где: Санкт-Петербург Репутация: 1 Всего: 5 |
1)
Я UpdateWindow не делаю. У меня вообще после CreateWindowEx идёт показ окна на экране функцией ShowWindow. После этого окно точно прорисовывается. Просто CreateWindowEx окно на экране не покажет (в смысле реальное окно, а не кнопку и т.п.). А вообще лучшее доказательство в таком случае - эксперимент. 2) Можешь почитать в MSDN про сообщение WM_QUIT. Там, в частности, сказано, что такое wParam - это параметр, с которым была вызвана функция PostQuitMessage. Т.е. если ты сделал PostQuitMessage(0); то разницы между вариантами никакой. Но если, например, ты сделал PostQuitMessage(239), то в первом случае у тебя программа всё равно вернёт 0, а во втором то, что и хотелось - 239. 3) Опять же, читаём MSDN. Ищется это через гугл. Если перевести, то получается, что hIcon - это большая иконка окна, а hIconSm - маленькая. Если hIconSm не задан (==NULL), то масштабируется большая до нужных размеров. Еще можно загуглить вот до сюда и узнать, что большая иконка должна быть размера 32x32 и она отображается в окне Alt+Tab. А маленькая отображается в заголовке окна и должна быть размером 16x16. Это сообщение отредактировал(а) yeputons - 29.4.2009, 11:08 |
|||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
А как же стиль WS_VISIBLE?! Можно обойтись без ShowWindow. Функция ShowWindow используется для обработки четвертого параметра в WinMain - nCmdShow. Поэтому его и пишут в примерах. А так, функцию можно не вызывать, а использовать стиль WS_VISIBLE. Если окно обрабатывает сообщение WM_PAINT, и что-то рисует, то UpdateWindow вызвать желательно.
В msg.wParam окажется то, что передавалось в функцию PostQuitMessage, т.е. код. Возвращать ли msg.wParam, или нет - дело программиста. Это сообщение отредактировал(а) 586 - 29.4.2009, 17:49 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |