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

时间:2016-03-15 07:58:15

标签: windows visual-c++ mfc

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

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

我的问题是: 我如何获得静态控件的窗口,并确保尽管放置了指向当前窗口的指针?

1 个答案:

答案 0 :(得分:2)

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 *的{​​{1}},请注意m_myStaticm_myStatic的一个实例,它来自CStatic(请参阅CStatic documentation),因此只需在需要CWnd的地方使用&m_myStatic,因为CWnd *可以隐式转换为CStatic *