我用MFC向导生成了一个SDI程序,我想在程序中自己处理命令行参数。这个参数是一个IP地址。
我有两个问题:
第一:每当运行到ProcessShellCommand(cmdInfo),程序以参数为文件名打开一个文件,可是我这个参数不是文件名,但是我将这句话去掉以后,运行到m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);时程序抛出异常。我如何去掉MFC对参数的自动处理?
第二:我需要弹出一个对话框来登陆到某个主机,可是这段代码放在那个地方比较合适,即程序什么时候完成了初始化的操作?

解决方案 »

  1.   

    第二问:
    放在InitInstance()的return TRUE;前
      

  2.   

    谢谢zhucde(【风间苍月】) ,可是现在不解决第一问,无法往下走。
    请高人们继续
      

  3.   

    1:不使用文件名的参数可以用/来说明,比如你可以使用 char *str=__targv[1];来找到第一个参数2:CSDIApp::InitInstance()最后应该没问题,想退出的话就返回FALSE
      

  4.   

    第一个问题:
     作为一个SDI程序,它是框架/视图/文档结构的,
     必须在ProcessShellCommand(cmdInfo)为其创建一个新文档视图,
      注释掉必然会出错' 如果你想使用 命令行参数可以直接用ShellExecute()来另外执行
      

  5.   

    去掉ProcessShellCommand(cmdInfo)后,添加上
    pDocTemplate->OpenDocumentFile(NULL);
      

  6.   

    比如
    SDI.exe /202.112.121.1
    这样子处理是可以的
      

  7.   

    可以如下实现:      
       CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
     // 让其认为没有加载文件
    cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;
    // Dispatch commands specified on the command line
    if (!ProcessShellCommand(cmdInfo))
    return FALSE;
      

  8.   

    注意:
         如果仅通过return false退出,一定要记住释放资源。