Как создать комбинированный список с растровыми изображениями в Win32? - PullRequest
1 голос
/ 10 июня 2010

Я хотел создать пользовательское поле со списком, как это (как в MS Word),

альтернативный текст http://img265.imageshack.us/img265/232/comboboxcustom.png

Есть ли какие-либо вызовы Win32 API (я не могу использовать MFC), чтобы выполнить эту работу (например, ChooseColor () или ChooseFont ()? Если их нет, кто-нибудь может подсказать, как это сделать?) Спасибо тебе.

С уважением,

EDIT: Создание нарисованного владельцем диалогового окна !! Это единственный способ? http://msdn.microsoft.com/en-us/library/bb775794%28VS.85%29.aspx#creating_square_meal

Ответы [ 3 ]

1 голос
/ 10 июня 2010

У вас есть несколько вариантов решения вашей проблемы:

  1. Все общие элементы управления поддерживают WM_SETFONT, поэтому, если вы найдете шрифт, в котором есть все необходимые вам линейные элементы, вы можете изменить шрифт элемента управления combobox и заполнить элементы соответствующими текстами.
  2. Существует элемент управления ComboBoxEx, который объединяет изображения с текстовыми сообщениями (см. http://msdn.microsoft.com/en-us/library/bb775738(VS.85).aspx).. Будьте осторожны, какая часть элементов будет выбрана (просто попробуйте). Если вы можете немного изменить свои требования к элементу управления combobox Вы сможете использовать это.
  3. Вы можете использовать поле со списком владельца. Тогда вы абсолютно свободны, но ваш код может быть немного длиннее, и вам следует быть более осторожным, если вы работаете с нестандартной цветовой схемой окон или нестандартными темами. Я рекомендую вам использовать функции GetSysColor в этом случае.

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

0 голосов
/ 10 июня 2010

В Win32 это называется выпадающим списком владельца.Хорошая отправная точка для онлайн-диктовки здесь:

http://msdn.microsoft.com/en-us/library/bb775794%28VS.85%29.aspx#creating_owner_drawn

0 голосов
/ 10 июня 2010

Вы можете получить из WTL :: CComboBox .Вам нужно будет реализовать обработчики сообщений для

  • WM_MEASUREITEM / OCM_MEASUREITEM, чтобы выполнить измерения размера элементов комбинированного списка
  • WM_DRAWITEM / OCM_DRAWITEM, чтобы сделать сам рисунок.Вам действительно не нужны растровые изображения, вы можете просто рисовать, используя GDI.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...