【发布时间】:2012-06-28 10:57:47
【问题描述】:
我有一个父窗口和几个子窗口。使用 SpyXX 我可以看到孩子们都有一定的风格课,比如说ChildWindowClass。
当我使用这个特定类的名称创建窗口时,CreateWindowEx 返回一个NULL 句柄。如果我使用自己的类并且只设置父类,则该窗口是子窗口,但是 - 当然 - 与所有其他子类具有不同的类。
如果我得到样式然后设置它,则找到样式,但没有为我的子窗口设置。它仍然显示与CreateWindowEx 一起使用的样式
HWND firstChild = FindWindowEx(MyClass::_parent, NULL, szFsxChildWindowClass, NULL);
LONG childStyle = GetWindowLong(firstChild, GWL_STYLE);
...
SetWindowLong(MyClass::_child,GWL_STYLE, childStyle);
ChildWindowClass 不是我注册的,所以我无法交叉检查它是如何注册的。那么如何为我的子窗口设置这种样式呢?
-- 根据要求编辑调用--
child = CreateWindowEx( WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
szWindowClass, // this is where I want to place the name of the child class
_T("Test"),
WS_CHILDWINDOW | WS_VISIBLE,
x,y, // 0,0
w, h, // 500,100
MyClass::_parent, // parent
NULL,
MyClass::_hInstance, // must this be 0??
NULL
);
【问题讨论】:
-
你应该向我们展示你的 CreateWindowEx 调用。
-
另外,为了确定一下,您要使用的窗口类是否已在您的进程空间中注册?
-
没有必要猜测,Windows 会告诉您错误代码有什么问题。您需要记录 GetLastError() 返回的内容。
-
当然,抱歉我没有写这个。没有最后一个错误,只是句柄为0。
标签: c++ createwindowex window-style