在win32中调整Combobox的大小(更改宽度)

时间:2009-06-11 02:41:23

标签: c combobox resize width

我有以下代码来生成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);

知道为什么会这样吗?它似乎调整了组合框的错误部分,这在某种程度上是透明的。

我一直在尝试不同的事情,这可能是愚蠢的事情,但我不能把手指放在它上面。

最诚挚的问候, Alain Deschenes http://www.arianesoft.ca

3 个答案:

答案 0 :(得分: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并立即返回。

最诚挚的问候, Alain Deschenes http://www.arianesoft.ca

答案 1 :(得分:0)

重新调整后是否重新绘制整个窗口?

答案 2 :(得分:0)

组合框的哪个部分没有调整大小?文本框还是下拉列表?

可以使用CB_SETDROPPEDWIDTH消息调整下拉列表的大小。