gpt4 book ai didi

c - 为什么禁用带有 WS_CHILD 的父窗口内的编辑控件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:42 25 4
gpt4 key购买 nike

我创建了一个窗口,在 CreateWindowEx 函数中指定了 WS_CHILD,如下所示:

HWND newEvent = CreateWindowEx(WS_EX_CONTROLPARENT, NewEventClassName, NewEventTitle, 
WS_BORDER | WS_OVERLAPPEDWINDOW | WS_CHILD,
CW_USEDEFAULT, CW_USEDEFAULT,
400, 230, hwnd, NULL, NULL, NULL);

然后,我在其中创建了一个编辑控件:

HWND editCtrlEventName;
editCtrlEventName = CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", L"EVENT_NAME",
WS_GROUP | WS_CHILD | WS_VISIBLE |
ES_LEFT | ES_UPPERCASE, 110, 10, 130, 20,
newEvent, (HMENU)2001, NULL, NULL);

当窗口被创建时,编辑控件被创建,但在它内部被禁用,我无法以任何方式启用该控件。我已经尝试在我的编辑控件中使用 EnableWindow() 函数和类似函数,但没有成功。但是,当我从 newEvent 中删除 WS_CHILD 样式时,它可以正常工作。

我是 winapi 编程的初学者,我不清楚这种行为。在子窗口中创建编辑控件有什么问题吗?

最佳答案

HWND newEvent = CreateWindowEx(WS_EX_CONTROLPARENT, NewEventClassName, NewEventTitle, 
WS_BORDER | WS_OVERLAPPEDWINDOW | WS_CHILD,
CW_USEDEFAULT, CW_USEDEFAULT,
400, 230, hwnd, NULL, NULL, NULL);

上面代码的错误在于组合了两种互斥的样式:WS_OVERLAPPEDWINDOW | WS_CHILDWS_OVERLAPPEDWINDOW 是顶层窗口的风格,WS_CHILD 当然是子窗口的风格。

此外,CW_USEDEFAULT 对子窗口无效。

除此之外,将编辑控件创建为另一个子窗口的子窗口应该没有任何问题。 Windows 本身在很多地方都使用了这种技术,例如组合框有一个编辑控件作为子窗口。

关于c - 为什么禁用带有 WS_CHILD 的父窗口内的编辑控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com