原本只想把原先的项目转到vs 2008上面去完善,于是去了nehe的主页找了个appwizards
在另外一台电脑上打开,vs 2003,装好模板,运行完,生成好所有文件后,拿到了工作站上面,用vs 2008打开。
f7直接编译,然后开始debug。一些问题这里说下。
1 关于glaux.h 网上很多人讨论过这个,于是换了lib
kernel32.lib user32.lib gdi32.lib advapi32.lib
64位也一样。
2 关于字符串转换。_T
3 关于CMainFrame的构造函数
nehe生成的mainfram.h中,CMainFrame的构造函数是public的,08是protected。这个的问题源于MyApp.cpp中,InitInstance()函数在nehe wizards中如下
BOOL COGLTemplateApp::InitInstance()
{
// Standard initialization
...
// To create the main window, this code creates a new frame window
// object and then sets it as the application's main window object.
m_pMainWnd = NULL;
CMainFrame* pFrame = new CMainFrame;
if (!pFrame->Create(NULL,"MFC OpenGL"))
return FALSE;
m_pMainWnd = pFrame;
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
return TRUE;
}
显然,他要在App下面调用MainFrame。不过上面这几行代码有些奇怪。我屡思不得其解。
如果这样代替
BOOL COGLTemplateApp::InitInstance()
{
// Standard initialization
...
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
为什么他要舍近求远的重新做一个pFrame呢。
4 该好doc类,修改menu。copy代码,添加消息映射函数。完工
others:
如果InitInstance()像nehe那样,显示不出menu。这和doc类的调用顺序有关。
View类可以不用。那显示单张dcm怎么办?
DoModal()一个对话框,然后直接将转换好位图放进去,还可以添加控件调整窗位窗宽,两全。