Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Тяжёлый вопрос про COMBOBOX (WinApi)

Ответить
Настройки темы
Тяжёлый вопрос про COMBOBOX (WinApi)
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Нужно создать COMBOBOX заранее заданного размера (чтобы закрыть некоторый прямоугольник в окне). Поменять его вертикальный размер у меня получилось, задав размер области редактирования. Можно конечно задать её с учётом границы, но её размер может меняться в разных Виндах. Всё это желательно оформить под XP (это уже не проблема).
Если есть какие идеи (не обязательно быть знатоком) - напишите, пожалуйста.
Для справки: COMBOBOX создаётся всегда фиксированной высоты (при изменении размеров, он заполняет остальную область цветом фона), но в QT для Windows я видел, как он легко менял свой размер.

Отправлено: 13:35, 16-06-2004

 

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


А можно осведомиться как вы изменили вертикальный размер
Цитата:
задав размер области редактирования
?

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 00:59, 17-06-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Если сделать ему стиль OWNERDRAWFIXED, в оконной процедуре у хозяина обработать событие WM_MEASUREITEM, указав размер элемента, то COMBOBOX растянется так, чтобы вместить элемент. Пример есть в хелпе win32.hlp (Borland)

Отправлено: 11:16, 17-06-2004 | #3


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Весело. Спасибо! Но я начинаю не понимать суть проблемы - вертикальный менять можем, горизонтальный еще более можем . А что необходимо?

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 23:43, 18-06-2004 | #4

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Мы меняем вертикальный размер не ComboBox-а, а его области редактирования. Кроме неё у него со всех сторон торчат границы самого Combobox-а. Размер границы нигде документально не зафиксирован, следовательно он может поменяться в версии Windows 5.1.000000001. Выяснить размер границы можно (через задницу), но он может зависить от размера этого контрола (напр. какой-нибудь align).
Таким образом, необходимо решать обратную задачу (что-то вроде численного решения нелинейного уравнения), чем заниматься на хотелось бы. А необходимо вот что:

Как создать ComboBox заранее заданного размера. (а не просто поменять его размер)

Отправлено: 12:23, 30-06-2004 | #5


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


pva
Хотя я могу попутать с QT, всё же рискну предложить свой вариант. Делаете онко типа Frame в нужном месте, нужного размера. А в этом окне делаете Combobox. Тогда он будет ограничен родительским фреймом, которого не видно. Э?

Отправлено: 13:03, 30-06-2004 | #6

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Действительно... правда при этом ComboBox либо будет урезан (т.е. отображается только его часть), либо займёт столько места, сколько ему нужно (винда решает), а остальное - поверхность окна (frame). Второй вариант достигается, если при создании указать больший размер, чем нужно винде. Первый эффективен, но не совсем то, чего хотелось бы.
Похоже, придётся остановиться на угадывании размера рамки ComboBox-а. Спасибо за содействие.
Если у кого ещё появятся идеи (любые) - буду рад.

Отправлено: 13:03, 02-07-2004 | #7


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Цитата pva:
ComboBox либо будет урезан...
Дык, а если ему сразу же пульнуть WM_SIZE (или как там WM_RESIZE?) ?

Отправлено: 13:35, 02-07-2004 | #8

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Пробовал он, урод на это никак не реагирует.

Отправлено: 14:00, 02-07-2004 | #9

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Короче решил задачу так:
  • делаю и субласю combobox WS_OWNERDRAWFIXED, ставлю маркер, что я его сделал
  • переадрессую сообщения WM_DRAWITEM тому, кто послал, если у него стоит маркер, что я его создал
  • на сообщение WM_WINDOWPOSCHANGED посылаю (CB_SETITEMHEIGHT, -1, высота окна - 6), временно запретив субклассовой процедуре отвечать на сообщения.
  • на WM_DRAWITEM вручную рисую содержимое combobox' listbox в стиле linux KDE 3
  • делаю пару хитростей, чтобы поле combobox' edit было посередине (по вертикали)
выгладит красиво (XP & non-XP), правда мне кажется, что делаю лишние операции.

Отправлено: 15:24, 16-07-2004 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Тяжёлый вопрос про COMBOBOX (WinApi)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] карта 1600 про вопрос про S-Video GLOVER Видеокарты 2 01-12-2009 05:48
Вопрос про ключи shilo Лицензирование продуктов Microsoft 13 14-05-2007 10:34
Вопрос про IP _Snake_ Хочу все знать 12 16-10-2006 11:03
Вопрос про значки kop4enyi Автоматическая установка Windows 2000/XP/2003 2 11-10-2006 06:07
Хитрый вопрос по List-View (WinApi) pva Программирование и базы данных 3 17-05-2005 13:38




 
Переход