2

我有以下代码来生成一个组合框:

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

4

3 回答 3

3

伙计们,我找到了……我的 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

于 2009-06-11T04:08:10.207 回答
0

调整大小后是否要重绘整个窗口?

于 2009-06-11T03:06:15.857 回答
0

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

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

于 2009-06-11T03:14:36.603 回答