![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Dem_max, речь не о ограничении внешних размеров фрейма, читай вопрос внимательно:
MDICLIENT - дочернее, а не перекрытое окно MenSem, поскольку статус - контрол простой до безобразия, в него практически никогда не суют контролы, есть еще более корректный и облегченный способ создания статус бара - это резервирование неклиентской области под статус в WM_NCCALCSIZE и рисование в нем чего-либо в WM_NCPAINT, тогда дополнительно ничего позиционировать не придется, т.к. статус уже не будет отображаться в клиентской области (не будет так же и лишней нагрузки - окна статус бара (по моему, этот контрол вообще создан только для очень ленивых программистов) на форуме и в MSDN достаточно подробной информации на эту тему, нужно только поискать -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:09 --------------------
|
|||
|
||||
GremlinProg |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
см. пред-предыдущий пост, я уже писал как с этим бороться процедура фрейма:
здесь статус рисует всего лишь одна функция ::DrawEdge(...), если хочешь разнообразия, смени её на то, что нужно точно так же можно сделать и тулбар, но там сложнее, это не уложится ни в какой топик форума, принципы создания контролов в неклиентской области я уже не раз расписывал PS: код не проверял, но пока вроде ошибок не вижу, пиши, если что -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:10 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
status_bar_height - высота статус бара,
status_rect - прямоугольник статус бара в неклиентской области задать изначально нужно только status_bar_height, остальное вычислится самостоятельно -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:10 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
в WM_NCPAINT ::DefWindowProc(...) вызови вернее DefFrameProc
Добавлено через 1 минуту и 56 секунд стандартная обработка в любом случае должна быть, я ж ни где не писал return Добавлено через 3 минуты хотя в WM_NCCALCSIZE можно заменить break return'ом, т.к. используется префиксная форма -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:10 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
) посмотри внимательно на код, смотри, чтобы вызовы DefFrameProc не дублировались
по скрину хорошо видно, что DefFrameProc вызван 2 раза, что привело к двойному вычету границ
"можно" заменить на "нужно" Это сообщение отредактировал(а) GremlinProg - 15.8.2008, 21:37 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:10 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это скорее всего связано с чем-то другим, показывай процедуру окна -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:11 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
на сообщение WM_NCCALCSIZE lParam всегда указывает как минимум на RECT, следовательно ошибка происходит на другое сообщение, убедись в том, что перед case WM_NCCALCSIZE стоит break
здесь речь идет о создании статусбара, а не о том, где у тебя там синтаксические ошибки мы ведь здесь не можем исправлять их телепатически раз ты не хочешь показывать код, значит исправляй все сам Добавлено через 4 минуты и 23 секунды статус бар и не будет рисоваться, пока все ошибки не будут исправлены -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) MenSem - 22.12.2010, 00:11 --------------------
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
думай, решай, я уже говорил, есть простой способ решить проблему: выложить код
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |