![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
yngwie19 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Всем привет у меня вопрос вот какого характера. Вообщем в функции WinMain() создается окно у указанием нулевых значений ширины и высоты. Далее это окно разворачивается на весь экран с помощью
далее обрабатываю сообщение WM_CREATE, хочу получить коордитаны рабочей области окна:
но в структуре r, значения right и bottom нулевые. Если при создании окна указать его размеры, то функция их получит, но мне нужно чтобы в функции CreateWindow() было установлено ноль а после разворачивания определить координаты его рабочей области. |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
WM_CREATE нужно сначала передать процедуре окна по-умолчанию, после этого, окно, действительно считается созданным и координаты будут соответствовать выставленным
Добавлено через 1 минуту и 30 секунд
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
||||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну так, в основном, все компоненты инициализируются на WM_CREATE закон инкапсуляции кто старше, тому и карты в руки В данном случае имеет место вызов двух процедур окна: 1. DefWindowProc - системная 2. WndProc - твоя представь, вместо этого, существуют два класса:
вызов init(rc) не был бы произведен, т.е. операция myrect = rc была бы не корректной поэтому, WM_CREATE - конструктор, который нужно пропустить старшему, после чего, делать что-то свое -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
GremlinProg, Ясно Я впринципе решил проблему обработав сообщение WM_SIZE, но мне хотелось разобраться почему нет значений. Хорошо а почему когда Я окну в CreateWinow() задаю значения он их поспроизводит в GetClientRect() ? окно из где-то хранит?
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
не понял, что он воспроизводит? ну поставь, к примеру координаты по-умолчанию(CW_USEDEFAULT), что в этом случае должен вернуть GetClientRect перед WM_CREATE? пока окно официально не создано, не нужно принимать во внимание ни каких результатов его работы -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
||||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
дело в том, что WM_CREATE обрабатывается ДО ShowWindow оно минует очередь сообщений и сразу посылается в оконную процедуру -------------------- qqq |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
нет, не минует, но вызывается, конечно раньше, чем ShowWindow установит параметры видимости, поскольку вызывается еще до того, как CreateWindow вернет результат Добавлено через 2 минуты сообщение не вызывается, обрабатывается -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
||||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
макрос - куда обычно - в свитч:
а в OnCreate - основной код кейса -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
GremlinProg, да нет не макрос куда писать, а все то что ты написал как это записать в OnCreate()
|
|||
|
||||
GremlinProg |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
yngwie19, вопрос к API не относится, это вопрос эрудированности в Си основы основ - понятие функции, оператор return, работа с макросами и т.п. я уже просил, не задавать их тут -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
yngwie19 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
GremlinProg, Я конкретно спрашиваю про функцию ::DefWindowProc(....). Что писать в аргументах этой функции. Ведь OnCreate() передает только HWND и LPCREATESTRUCT
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |