![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Zmeevic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.6.2007 Репутация: нет Всего: нет |
Вот такой вопрос: можно ли назначить ClientRect POPUP окну?
прубую что-то мудрить с WM_NCCALCSIZE, пока |
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Можно сделать следующим образом: в главном окне создать дочернее окно-панельку, которое меньше родительского на величину заголовка и бордюра, оно и будет клиентской областью.
|
|||
|
||||
| Zmeevic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.6.2007 Репутация: нет Всего: нет |
Пробовал я этот вариат... но хотелось ближе к стандарту...
т.е. что-то где-то отловить, подменить и выплюнуть через DefWindowProc(); |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Можно, и именно так и нужно. lParam есть адрес структуры NCCALCSIZE_PARAMS, туда (в rgrc) и нужно записать новые координаты клиентской области (уменьшив на сколько надо исходные). И все дела. -------------------- ... |
|||
|
||||
| Denis_Vik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.12.2007 Репутация: нет Всего: нет |
Здравствуйте.
Не моглибы вы привести здесь небольшой пример использования сообщения wm_nccalcsize. А то не понятен смысл использования трех структур rect и структуры windowpos в структуре nccalcsize_param. Привидите пожалуста, если можно, пример изменения клиентской области окна, уменьшив ее на 10 пикс. со всех сторон. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Пример есть только для MFС, примерно так:
Здесь bCalcValidRects - это wParam, а lpncsp - lParam. Согласно MSDN, lParam может содержать не только NCCALCSIZE_PARAMS*, и зависит это от wParam, но в коде, откуда я взяла кусок, это не проверяется, но тем не менее все работает. Возможно, в каких-то конкретных случаях надо проверять. Да, нужно иметь в виду, что это сообщение посылается в процессе создания окна. Т.е. если окно создается не под твоим контролем, то в свой обработчик ты можешь и не попасть. Чтобы перустановить клиентскую область после создания окна, нужно вызвать SetWindowPos с флагом SWP_FRAMECHANGED - тогда NCCALCSIZE опять придет. -------------------- ... |
|||
|
||||
| Zmeevic |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.6.2007 Репутация: нет Всего: нет |
to Earnest, спасибо, если б мог, поднял бы репутацию, а пока еще раз СПАСИБО!!!
|
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
Ты поднял Earnest репутацию.
|
|||
|
||||
![]()
|
| Правила форума "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. |