gpt4 book ai didi

windows - CStatic::GetWindow() 不返回当前控件的窗口

转载 作者:可可西里 更新时间:2023-11-01 11:48:50 31 4
gpt4 key购买 nike

我正在尝试绘制一些颜色介绍对话框,我有几个按钮(用于选择颜色)和一个 CStatic 控制我将使用哪个窗口来绘制所选颜色它。但是,当我调用 m_myStatic.GetWindow( NULL ) 时,会返回指向第一个按钮窗口的指针。当我调用 GetWindow( GW_HWNDLAST ) 时,返回一个指向静态控制窗口的指针,因为它最后被放置在对话框中(在底部)。

只要我能在文档中看到CWnd::GetWindow()被记录为不是虚拟的,因此当它被调用时它不会返回调用者控件的窗口。

我的问题是:我如何获得静态控件的窗口并确保无论放置如何都返回指向当前窗口的指针?

最佳答案

CWnd::GetWindow电话 ::GetWindow , 通过 m_hWnd作为第一个参数,你的 nCmd作为第二个参数。

NULL#define NULL 0 ,所以这与调用 GetWindow(m_hWnd, 0) 完全相同, 和 GW_HWNDFIRST也定义为 0 ,所以你所做的就是:

CWnd *w = m_myStatic.GetWindow(GW_HWNDFIRST);

...这被记录为返回 m_myStatic 的第一个兄弟.


如果你想要的只是一个 CWnd *来自 m_myStatic , 请记住 m_myStaticCStatic 的实例,源自 CWnd (参见 CStatic documentation ),所以可以简单地使用 &m_myStatic无论哪里 CWnd *是必需的,因为 CStatic *可隐式转换为 CWnd * .

关于windows - CStatic::GetWindow() 不返回当前控件的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36005459/

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