我试图绘制一些颜色介绍对话框,我有几个按钮(用于拾取颜色)和CStatic
控件我将使用哪个窗口来绘制所选颜色在里面。
但是当我调用m_myStatic.GetWindow( NULL )
时,会返回指向第一个按钮窗口的指针。
当我调用GetWindow( GW_HWNDLAST )
时,返回一个指向静态控制窗口的指针,只是因为它最后放在对话框中(在底部)。
只要我在文档中看到CWnd::GetWindow()被记录为非虚拟的,因此在调用时它不会返回调用者控件的窗口。
我的问题是: 我如何获得静态控件的窗口,并确保尽管放置了指向当前窗口的指针?
答案 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_myStatic
是m_myStatic
的一个实例,它来自CStatic
(请参阅CStatic documentation),因此只需在需要CWnd
的地方使用&m_myStatic
,因为CWnd *
可以隐式转换为CStatic *
。