请教CWnd::CreateEx问题
请教:
SysTray类是CWnd的派生类:
class SysTray : public CWnd
在该类的createtest函数中,有如下代码:
void SysTray::createtest()
{
HWND hwnd_test = this->GetSafeHwnd();
CWnd *p;
p = CWnd::FromHandle(nid.hWnd);
return;
}
主类中定义了SysTray sysT;对象。并且有如下语句:
sysT.createtest();
在createtest函数中断点,看到this非空,但是,this->GetSafeHwnd()为空,
如果将上面的函数代码增加一行:
void SysTray::createtest()
{
CWnd::CreateEx(0, AfxRegisterWndClass(0), _T(""), WS_POPUP, 0,0,10,10, NULL, 0);
HWND hwnd_test = this->GetSafeHwnd();
CWnd *p;
p = CWnd::FromHandle(nid.hWnd);
return;
}
我在刚才制作系统托盘栏图标的时候,就是因为没有执行CWnd::CreateEx函数,this->GetSafeHwnd()为空,所以SysTray sysT对象收不到消息。现在加上CWnd::CreateEx后,没有问题了。
我的问题是:
1) 执行CWnd::CreateEx函数前后,我的对象SysTray sysT;有什么区别?
2) CWnd::CreateEx函数的作用是什么?