其中CTestApp initialization如下:
BOOL CTestApp::InitInstance()
{
{ CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash); }////////一个启动时的画面/////////////////////////////////////
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(8);
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_EMCITETYPE,
RUNTIME_CLASS(CEmciTestDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CEmciTestView));
AddDocTemplate(pDocTemplate);
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame; EnableShellOpen();//注册
RegisterShellFileTypes(TRUE);//注册 CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo))
return FALSE;
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow(); m_pMainWnd->DragAcceptFiles(); return TRUE;
}
1、为什么在双击打开应用程序保存的文档时出现下列提示:
Windows 找不到文件 'E:\Test\Debug\Test1.eet'。请确定文件名是否正确后,再试一次。要搜索文件,请单击「开始」按钮,然后单击“搜索”。
确定后,应用程序打开,主框架打开但子框架、视图打不开。
搜了一下,没有有用资料。
2、是框架和视类、文档类之间引起的错误吗?
我在文档类中有另一个串行化
void CEmciTestDoc::Serialize(CArchive& ar)
{
m_DataArray.Serialize(ar); if (ar.IsStoring())
{}
else
{}
}
m_DataArray是一个由自定义模板定义的串行化对象。
3、EnableShellOpen()RegisterShellFileTypes()和RegCreateKey()RegSetValueEx()注册有什么区别?
谢谢!!!
BOOL CTestApp::InitInstance()
{
{ CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash); }////////一个启动时的画面/////////////////////////////////////
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(8);
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_EMCITETYPE,
RUNTIME_CLASS(CEmciTestDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CEmciTestView));
AddDocTemplate(pDocTemplate);
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame; EnableShellOpen();//注册
RegisterShellFileTypes(TRUE);//注册 CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo))
return FALSE;
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow(); m_pMainWnd->DragAcceptFiles(); return TRUE;
}
1、为什么在双击打开应用程序保存的文档时出现下列提示:
Windows 找不到文件 'E:\Test\Debug\Test1.eet'。请确定文件名是否正确后,再试一次。要搜索文件,请单击「开始」按钮,然后单击“搜索”。
确定后,应用程序打开,主框架打开但子框架、视图打不开。
搜了一下,没有有用资料。
2、是框架和视类、文档类之间引起的错误吗?
我在文档类中有另一个串行化
void CEmciTestDoc::Serialize(CArchive& ar)
{
m_DataArray.Serialize(ar); if (ar.IsStoring())
{}
else
{}
}
m_DataArray是一个由自定义模板定义的串行化对象。
3、EnableShellOpen()RegisterShellFileTypes()和RegCreateKey()RegSetValueEx()注册有什么区别?
谢谢!!!
是的,就如同那样的功能,.eet是后缀名,默认执行程序是Test.exe,要实现双击.eet后缀名的文档都用Test.exe打开。
现在是出现如上找不到提示并且Test.exe的主框架打开了,但子框架和视图打不开。
改后缀名没用。
郁闷中……
EnableShellOpen();//注册
RegisterShellFileTypes(TRUE);//注册
上面两句以在注册表中将Test.exe与.eet后缀名关联。
更加郁闷中……
CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);改变了命令参数
在CSplashWnd中创建对话框有问题
结贴了!!!
谢谢二位热情的帮助!!!