У меня есть подкласс CComboBox
, который ведет себя по-разному в двух разных контекстах - как в родном C++. В рабочем (тестовом) контексте приложение верхнего уровня было создано с использованием VS2008. В нерабочем случае приложение значительно сложнее и, вероятно, первоначально было создано более ранней версией VS.Как повлиять на определение класса окон COMBOBOX
В случае сбоя элемент управления не отображает выпадающий список, но отвечает на клавиши управления стрелками вверх/вниз. Также в случае отказа он всегда возвращает при запросе с использованием GetMinVisible
и всегда возвращает отказ от SetMinVisibleItems
.
Похоже, что проблема кроется в определении окна COMBOBOX
. Я сбросил данные, возвращенные с ::GetClassInfoEx
в обоих случаях. Помимо адреса wndProc
, существует два отличия. Во-первых, рабочий корпус имеет стиль CS_GLOBALCLASS
, установленный в то время как случай отказа нет. Также рабочий корпус определяет 4 байта дополнительного окна хранения (cbWndExtra
), а случай отказа - 8 байтов.
Так что мои вопросы: 1) Какие конфигурации свойства могут повлиять на определение COMBOBOX
класса окна ?, и 2) Как я могу определить правильный WNDPROC использовать, если я могу сделать мой собственный класс окна?
EDIT: поведение раскрывающегося списка изменяется со спецификацией свойства character set
в поле Общие сведения вкладка свойств. Он работает, как и ожидалось, если character set
- unicode
и не работает, когда он not set
. Подкласс combo box находится в элементе управления ActiveX, но настройка на уровне приложения, по-видимому, влияет на класс окна, что заставляет испортить поле со списком в элементе управления ActiveX. Интересно, что есть и другие комбинированные поля, хотя и в диалоговом окне, в другом месте приложения, которое, кажется, ведет себя отлично.
В обоих приложениях используется ComCtrl v6 aka Visual Styles? – Anders
И инициализируют общие элементы управления, поэтому я думаю, что это означает «да». – rlduffy
Я говорю о зависимости в манифесте, вы можете проверить с помощью http://weblogs.asp.net/kennykerr/archive/2007/07/10/manifest-view-1-0.aspx – Anders