我有以下代码来生成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
答案 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消息调整下拉列表的大小。