Изменить размер Combobox в win32 (изменить ширину) - PullRequest
1 голос
/ 11 июня 2009

У меня есть следующий код для создания ComboBox:

HWND h = CreateWindowEx("COMBOBOX", "Text", CBS_DROPDOWN | WS_CHILD, WS_EX_CLIENTEDGE, ParentWnd, 0, 0, 200, 24);

В форме я создаю комбинированный список без проблем, однако, если я попытаюсь изменить его размер следующим образом, он не будет работать:

SetWindowPos(h, 0, 0, 0, NewWidth, OldHeight, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);

Есть идеи, почему это произошло? Кажется, он изменяет размер неправильной части поля со списком, который как-то прозрачен.

Я уже несколько дней пытаюсь заниматься разными вещами, возможно, это что-то глупое, но я не могу это понять.

С наилучшими пожеланиями, Ален Дешен http://www.arianesoft.ca

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Ребята, я нашел это ... В моей функции NewControlEx () C есть что-то, что не работает должным образом. Я использовал:

h$ = CreateWindowEx(0, "COMBOBOX", "TEXT", CBS_DROPDOWN | WS_CHILD, 10, 10, 400, 24, Parent.Handle, 0, Instance%, NULL);
SetWindowPos(h$, 0, 100, 100, 400, 32, SWP_NOZORDER | SWP_NOACTIVATE);
ShowWindow(h$, SW_SHOW);
InvalidateRect(h$, NULL, True);

Это работает так, как должно. Извините за беспокойство.

Оказалось, что это WM_SIZE: обработка событий, которая не обрабатывает исходный wndproc и сразу возвращается.

С наилучшими пожеланиями, Ален Дешен http://www.arianesoft.ca

0 голосов
/ 11 июня 2009

Какая часть поля со списком не изменяется? Текстовое поле или раскрывающийся список?

Размер выпадающего меню можно изменить с помощью сообщения CB_SETDROPPEDWIDTH .

0 голосов
/ 11 июня 2009

Перерисовываете ли вы все окно после изменения его размера?

...