首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用现有子类创建窗口(CreateWindowEx

无法使用现有子类创建窗口(CreateWindowEx
EN

Stack Overflow用户
提问于 2012-06-28 18:57:47
回答 1查看 970关注 0票数 0

我有一个父窗口和一些子窗口附加到这个。有了SpyXX,我可以看到所有的孩子都有一个特定的风格类,比如说ChildWindowClass

当我使用这个特定类的名称创建窗口时,CreateWindowEx返回一个NULL句柄。如果我使用自己的类,并且只设置了父窗口,那么该窗口就是一个子窗口,但--当然--与所有其他子窗口具有不同的类。

如果我得到样式,然后设置它,就会找到样式,但没有为我的子窗口设置样式。它仍然显示与CreateWindowEx一起使用的样式

代码语言:javascript
复制
HWND firstChild = FindWindowEx(MyClass::_parent, NULL, szFsxChildWindowClass, NULL);
LONG childStyle = GetWindowLong(firstChild, GWL_STYLE);
...
SetWindowLong(MyClass::_child,GWL_STYLE, childStyle);

ChildWindowClass不是我注册的,所以我无法交叉检查它是如何注册的。那么我如何为子窗口设置这个样式呢?

--根据请求编辑呼叫--

代码语言:javascript
复制
 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
        );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-28 19:35:22

检查GetLastError。如果它不是零,那么很可能是滥用了API。如果为0,则表示窗口过程通过从WM_NCCREATEWM_CREATE返回FALSE而显式地导致创建失败。

在处理这些消息时,窗口过程可以访问您传递给函数的所有参数(样式、标题、坐标、父窗口和菜单),而特定的窗口类可能需要通过lpCreateParams传递额外的数据,甚至是标题或坐标,否则创建会失败。

为该类的窗口设置断点或钩子WM_CREATE,并检查这些现有的子窗口是如何创建的,参数是什么。(假设您没有关于它的文档!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11243140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档