![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Вот смотрите, у меня есть клиенская часть окна и неклиентская. Я могу поменять размеры окна целиком (MoveWindow, SetWindowPos и т.с.)
А вот что будет клинтской, что нет, зависит от наличая/отсутствия рамки, зголовка и т.д. А в ручную как-то можно например, сделать бордюр шире? В общем поменть размер никлиентской части? -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Да, нужно обрабатывать сообщение WM_NCCALCSIZE, которое посылается при создании окна.
В нем ты можешь установить клиентскую область. Остальное будет неклиентская... Добавлено @ 17:40 Только рисовать в неклиентской области ты должна сама, на WM_NCPAINT: от простого изменения размера бордюр толще не будет. -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Ну то что рисовать сама, это понятно
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Только вот какая ерундень, похоже окнам у которох нет стила CS_HREDRAW or CS_VREDRAW сообщение WM_NCCALCSIZE не приходит
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
??? Странно! А окно ты точно сама создаешь? Create'ом...
А WM_NCCREATE получаешь? Вроде окно должно получить NCCALCSIZE при создании, а потом, если оно имеет CS_HREDRAW \ CS_VREDRAW, оно получает такие сообщения при изменении размеров... -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Приношу свои извнения NCCALCSIZE приходит. Это все блин вредносный MFC-шный DDX :'(
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Ой, еще вопрос в дагонку.
А если у меняконтрол не имеет полос прокрутки, то NCCALCSIZE - ком мне прийдет 1 раз при созжании ??? И сорри еще, а как мне спровоцировать вызов этого метода Если , к примеру, я хочу поменять размер клиентской области в ручную? Добавлено @ 11:20 В ходе работы? -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
У меня есть старый код, где тоже используется переопределение клиентской области. Так вот, там NCCALCSIZE приходит, если вызвать SetWindowPos с такими флагами:
SWP_NOZORDER | SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED | SWP_NOACTIVATE По-моему, главное тут FRAMECHANGED, а все остальное - чтобы не парится с координатами. Я уже не помню, откуда там что взялось, но оно работает. Окно - это вью, стилей CS_REDRAW у класса нет. -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
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. |