MFC程序带参数运行

来源:互联网 发布:天下网络投票公司 编辑:程序博客网 时间:2024/05/17 20:23
http://www.21tx.com 2004年11月11日Blog Huuyoo

下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。

第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下

#if!defined WZDCOMMANDLINEINFO_H

#defineWZDCOMMANDLINEINFO_H

// WzdCommandLineInfo.h : header file

//////////////////////////////////////////////////////////////////////////

// CWzdCommandLineInfo window

classCWzdCommandLineInfo :publicCCommandLineInfo

{

        // Construction

public :

        CWzdCommandLineInfo( ) ;

        // Attributes

public:

        BOOLm_bCFlag;

        BOOLm_bSFlag;

        BOOLm_bPFlag;

        CStringm_sArg;

        // Operations

public:

        voidParseParam(constTCHAR*pszParam,BOOLbFlag,BOOLbLast);

        // Overrides

        // Implementation

public:

        virtual ~CWzdCommandLineInfo();

} ;

//////////////////////////////////////////////////////////////////////////

#endif

 

 

头文件结束,下面是CPP文件

 

 

// WzdCommandLineInfo.cpp : implementation file

//

#include"stdafx.h"

#include"WzdCommandLineInfo.h"

 

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[] =__FILE__;

#endif

//////////////////////////////////////////////////////////////////////////

// CWzdCommandLineInfo

CWzdCommandLineInfo::CWzdCommandLineInfo( )

{

        m_bCFlag =FALSE ;

        m_bSFlag =FALSE ;

        m_bPFlag =FALSE;

        m_sArg =_T(" ") ;

}

CWzdCommandLineInfo::~CWzdCommandLineInfo( )

{

}

//////////////////////////////////////////////////////////////////////////

voidCWzdCommandLineInfo::ParseParam(constTCHAR*pszParam,BOOLbFlag,

                                                                                    BOOLbLast)

{

        CStringsArg(pszParam);

        if (bFlag)

        {

                  m_bCFlag = !sArg.CompareNoCase("c");

                  m_bSFlag = !sArg.CompareNoCase("s");

                  m_bPFlag = !sArg.CompareNoCase("p");

        }

        // m_strFileName gets the first nonflag name

        elseif (m_strFileName.IsEmpty())

        {

                  m_sArg =sArg ;

        }

        CCommandLineInfo::ParseParam(pszParam,bFlag,bLast ) ;

}

第二步:在APP类中添加成员变量:

public:

        CWzdCommandLineInfom_cmdInfo;

第三步:在InitInstance()函数中修改如下代码

// Parse command line for standard shell commands, DDE, file open

        ParseCommandLine(m_cmdInfo);

        // Dispatch commands specified on the command line

        if (!ProcessShellCommand(m_cmdInfo))

                  returnFALSE;

如此即可以在程序的其它地方通过AfxGetApp()->m_cmdInfo取得CWzdCommandLineInfo对象,然后通过判断起成员变量m_bCFlag等等就能知道是用哪个选项运行的了。
原创粉丝点击