hur.cn - 华软网

 热门搜索

MFC的initistance问题

  作者:未知    来源:网络    更新时间:2011/9/29
我追踪SDI的代码执行顺序, _tWinMain()-->AfxWinMain()->InitInstance()->然后书上说的create()与注册函数就追踪不到了。。。。  

求解啊

对了还有个问题:CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(C测试MFC程序Doc),
RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
RUNTIME_CLASS(C测试MFC程序View));

这个东西是怎么回事!
---华软 网友回答---
RUNTIME_CLASS  通过C++类的名字获得一个运行时类结构。
---华软网友回复---
应该是你没有安装MFC的代码,需要到添加删除程序里选择VS,更改,增加上需要的组件。

这方面可以看看深入浅出MFC“文档/视图”架构之类的文章。或者VC深入详解、MFC权威解析什么的书。
---华软网友回复---
看CMainFrame类的LoadFrame函数
C++">
BOOL CFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
CWnd* pParentWnd, CCreateContext* pContext)
{
// only do this once
ASSERT_VALID_IDR(nIDResource);
ASSERT(m_nIDHelp == 0 || m_nIDHelp == nIDResource);

m_nIDHelp = nIDResource;    // ID for help context (+HID_BASE_RESOURCE)

CString strFullString;
if (strFullString.LoadString(nIDResource))
AfxExtractSubString(m_strTitle, strFullString, 0);    // first sub-string

VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));

// attempt to create the window
LPCTSTR lpszClass = GetIconWndClass(dwDefaultStyle, nIDResource);
LPCTSTR lpszTitle = m_strTitle;
if (!Create(lpszClass, lpszTitle, dwDefaultStyle, rectDefault,
  pParentWnd, MAKEINTRESOURCE(nIDResource), 0L, pContext))
{
return FALSE;   // will self destruct on failure normally
}

// save the default menu handle
ASSERT(m_hWnd != NULL);
m_hMenuDefault = ::GetMenu(m_hWnd);

// load accelerator resource
LoadAccelTable(MAKEINTRESOURCE(nIDResource));

if (pContext == NULL)   // send initial update
SendMessageToDescendants(WM_INITIALUPDATE, 0, 0, TRUE, TRUE);

return TRUE;
}

---华软网友回复---
CMainFrame::OnCreate里设个断点,F11进入CFrameWnd::OnCreate()函数里看看
---华软网友回复---
引用 4 楼 visualeleven 的回复:
CMainFrame::OnCreate里设个断点,F11进入CFrameWnd::OnCreate()函数里看看


那请问谁又调用了loadFrame()呢?
---华软网友回复---
学习!
---华软网友回复---
引用 5 楼 qweewqpkn 的回复:
引用 4 楼 visualeleven 的回复:

CMainFrame::OnCreate里设个断点,F11进入CFrameWnd::OnCreate()函数里看看


那请问谁又调用了loadFrame()呢?

Construct a CFrameWnd object in two steps. First, invoke the constructor, which constructs the CFrameWnd object, and then call LoadFrame, which loads the Windows frame window and associated resources and attaches the frame window to the CFrameWnd object. The nIDResource parameter specifies the menu, the accelerator table, the icon, and the string resource of the title for the frame window. 

Use the Create member function rather than LoadFrame when you want to specify all of the frame window's creation parameters. 

The framework calls LoadFrame when it creates a frame window using a document template object. 

The framework uses the pContext argument to specify the objects to be connected to the frame window, including any contained view objects. You can set the pContext argument to NULL when you call LoadFrame. 

---华软网友回复---
引用 7 楼 visualeleven 的回复:
引用 5 楼 qweewqpkn 的回复:
引用 4 楼 visualeleven 的回复:

CMainFrame::OnCreate里设个断点,F11进入CFrameWnd::OnCreate()函数里看看


那请问谁又调用了loadFrame()呢?

Construct a CFrameWnd object in two steps. First, invoke the ……


已经懂了  结贴      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。