2009-06-11 5 views
1

У меня есть следующий код для генерации ComboBox:Изменение размера выпадающий в win32 (изменение ширины)

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

ответ

0

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

+0

Да я. h $ = NewControlEx (0, "COMBOBOX", NULL, "TEXT", CBS_DROPDOWN | WS_CHILD, WS_EX_CLIENTEDGE, Parent.Handle, 0, 0, 200, 24); log (h $); ShowWindow (h $, SW_SHOW); SetWindowPos (h $, 0, 100, 100, 500, 24, SWP_NOZORDER | SWP_NOACTIVATE); InvalidateRect (h $, NULL, True); Этот код написан на PPL (на моем родном языке), и он использует CreateWindowEx() в NewControlEx(). – Kornalius

+0

У вас форматирование не очень приятно в комментариях. Любой другой способ, которым я могу писать в своей теме? – Kornalius

0

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

Выпадающий список может быть изменен размером CB_SETDROPPEDWIDTH.

+0

Редактировать часть, а не выпадающий список. – Kornalius

+0

Я хотел бы иметь возможность отправить скриншот, есть ли способ? – Kornalius

2

Ребята, я нашел его ... В моей функции 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