由于自定义控件Custom control需要进行类绑定,只有注册窗口类后才能显示窗口。因此一般定义自定义控件对象后,在构造函数中用AfxRegisterClass注册窗口类,而AfxRegisterClass并不激活WM_CREATE消息,也就是说不能响应到OnCreate函数。那怎么响应OnCreate呢?
替代办法:OnCreate的内容可以用PreSubclassWindow代替。
当然,如果不用自定义控件Custom control,而采用类似第三方控件一样,通过void COpenGLControl::Create(CRect rect, CWnd *parent)再调用CreateEx创建窗口,则会激活WM_CREATE消息。
}
int COpenGLControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
dc = new CClientDC(this);
openGLDevice.create(dc->m_hDC);
ShowWindow(SW_SHOW);
SetForegroundWindow();
SetFocus();
ReSizeGLScene(lpCreateStruct->cx, lpCreateStruct->cy);
InitGL();
return 0;
}