其中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()注册有什么区别?
  谢谢!!!

解决方案 »

  1.   

    在哪里双击?是在windows系统里还是你的应用程序里
      

  2.   

    在windows里双击一个文件,会提示找不到这个文件?好怪
      

  3.   

    你是不是想做一个类似“始终使用选择的程序打开文件”这种功能,比如文件打开方式中默认指定使用写字板打开文本文件?而你那个eet就是要指定的默认执行程序?eet是可执行程序么?改了后缀名,会执行么
      

  4.   

    是很怪,我找了半天毛病,哈哈
    是的,就如同那样的功能,.eet是后缀名,默认执行程序是Test.exe,要实现双击.eet后缀名的文档都用Test.exe打开。
    现在是出现如上找不到提示并且Test.exe的主框架打开了,但子框架和视图打不开。
    改后缀名没用。
    郁闷中……
      

  5.   

    to LiChenYue:
    EnableShellOpen();//注册
    RegisterShellFileTypes(TRUE);//注册
    上面两句以在注册表中将Test.exe与.eet后缀名关联。
    更加郁闷中……
      

  6.   

    问题在于我程序写的有问题
    CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);改变了命令参数
    在CSplashWnd中创建对话框有问题
    结贴了!!!
    谢谢二位热情的帮助!!!