VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));
//装入图标,注册窗口类
LPCTSTR lpszClass = GetIconWndClass(dwDefaultStyle, nIDResource);
LPCTSTR lpszTitle = m_strTitle;
//调用CFrameWnd::Create()
if (!Create(lpszClass, lpszTitle, dwDefaultStyle, rectDefault, pParentWnd, MAKEINTRESOURCE(nIDResource), 0L, pContext))
return FALSE;
//存储菜单句柄
ASSERT(m_hWnd != NULL);
m_hMenuDefault = ::GetMenu(m_hWnd);
//装入加速键
LoadAccelTable(MAKEINTRESOURCE(nIDResource));
if (pContext == NULL) //初始化子窗口

SendMessageToDescendants(WM_INITIALUPDATE, 0, 0, TRUE, TRUE);
return TRUE;
}
由于LoadFrame()的形能简洁,在创建窗口的同时,完成许多主窗体的初始化工作。所以,如果以CFrameWnd为程序主窗体,一般通过LoadFrame()创建。如果要使用CFrameWnd 创建简单化的主窗体或子窗体,可调用Create()。
在文档视图支持的SDI程序中,主框架窗是在文档模板中应用CDocTemplate::CreateNewFrame()创建的。modifystyleex在该函数中,首先动态创建CFrameWnd对象,再调用对象的LoadFrame()成员。由于在CFrameWnd::PostNcDestroy()中清除了当前对象,所以尽管CFrameWnd对象惯于在堆中构造,却不必关心它的释放。例如:
void CFrameWnd::PostNcDestroy()
{
delete this;
}
另外,因为CFrameWnd创建了主窗口,所以在窗口销毁时,要向消息循环发送WM_QUIT消息,这个处理已封装在基类CWnd中。
管理视图对象
其实,视图无非是主框架窗口的一个ID为AFX_IDW_PANE_FIRST,带有边框的子窗口,这个主框架窗口是由CFrameWnd类封装并创建的。显然,视图作为其子窗口,也是由CFrameWnd创建的。成员函数CFrameWnd::OnCreateClient()用于创建视图窗口,它是该类的WM_CREATE消息处理函数中被调用的。代码如下:
BOOL CFrameWnd::OnCreateClient(LPCREATESTRUCT, CCreateContext* pContext)
{
/*pContext->m_pNewViewClass存储视图的运动时类信息的指针(CRuntimeClass*),可用于动态创建视图*/
if (pContext != NULL && pContext->m_pNewViewClass != NULL)
{
//调用CFrameWnd::CREATEVIEW()创建视图
if (CreateView(pContext, AFX_IDW_PANE_FIRST) == NULL)
return FALSE;
}
return TRUE;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30960-2.html
正说明没有化学添加剂和防腐剂之类的
那要看我们国家的变革力度够不够大持不持久
美国扰乱了伊拉克