比如,需要用一些ActiveX控件,但程序本身无界面的情况下。
1)从CWnd类中派生CMyWindow
2)增加成员函数 HWND Create();
HWND CMyWindow::Create()
{
//Register a window class
LPCTSTR classname = 0;
classname = AfxRegisterWndClass(0);
//Create the window and return it's handle
CWnd::CreateEx(NULL,classname,NULL,NULL,0,0,0,0,NULL,NULL);
ASSERT(m_hWnd!=NULL);
return m_hWnd;
}
3)重载virtual void PostNcDestroy();
void CMyWindow::PostNcDestroy()
{
//clean up this object
delete this;
}
这样使用:
1).h中声明CMyWindow*m_pWnd;
2)初始化:
m_pWnd = new CMyWindow;
HWND hwndTarget = m_pWnd->Create();
3)销毁
m_pWnd->DestroyWindow();
该类不可见,可以包含一些ActiveX控件。
如果要相应ActiveX的事件,则
.h中
DECLARE_EVENTSINK_MAP()
.cpp中
BEGIN_EVENTSINK_MAP(CMyWindow, CWnd)
ON_EVENT(CMyWindow, CONTROL_ID, 2, OnNewImageCamimage, VTS_NONE)
END_EVENTSINK_MAP()