我有以下代码来生成组合框:
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
最佳答案
伙计们,我找到了...我的 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
关于c - 在 win32 中调整组合框的大小(更改宽度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979059/