MFC程序带参数运行
2012-08-16 11:25
330 查看
http://www.21tx.com 2004年11月11日
Blog Huuyoo
下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。
第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下
#if
!defined WZDCOMMANDLINEINFO_H
#define
WZDCOMMANDLINEINFO_H
// WzdCommandLineInfo.h : header file
//////////////////////////////////////////////////////////////////////////
// CWzdCommandLineInfo window
class
CWzdCommandLineInfo :
public
CCommandLineInfo
{
// Construction
public :
CWzdCommandLineInfo( ) ;
// Attributes
public:
BOOL
m_bCFlag;
BOOL
m_bSFlag;
BOOL
m_bPFlag;
CString
m_sArg;
// Operations
public:
void
ParseParam(const
TCHAR*
pszParam,BOOL
bFlag,
BOOL
bLast);
// Overrides
// Implementation
public:
virtual ~CWzdCommandLineInfo();
} ;
//////////////////////////////////////////////////////////////////////////
#endif
头文件结束,下面是CPP文件
// WzdCommandLineInfo.cpp : implementation file
//
#include
"stdafx.h"
#include
"WzdCommandLineInfo.h"
#ifdef
_DEBUG
#define
new
DEBUG_NEW
#undef
THIS_FILE
static
char
THIS_FILE[] =
__FILE__;
#endif
//////////////////////////////////////////////////////////////////////////
// CWzdCommandLineInfo
CWzdCommandLineInfo::CWzdCommandLineInfo(
)
{
m_bCFlag =
FALSE ;
m_bSFlag =
FALSE ;
m_bPFlag =
FALSE;
m_sArg =
_T(" ") ;
}
CWzdCommandLineInfo::~CWzdCommandLineInfo(
)
{
}
//////////////////////////////////////////////////////////////////////////
void
CWzdCommandLineInfo::ParseParam(const
TCHAR*
pszParam,
BOOL
bFlag,
BOOL
bLast)
{
CString
sArg(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
else
if (m_strFileName.IsEmpty())
{
m_sArg =
sArg ;
}
CCommandLineInfo::ParseParam(pszParam,
bFlag,
bLast ) ;
}
第二步:在APP类中添加成员变量:
public:
CWzdCommandLineInfo
m_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))
return
FALSE;
如此即可以在程序的其它地方通过AfxGetApp()->m_cmdInfo取得CWzdCommandLineInfo对象,然后通过判断起成员变量m_bCFlag等等就能知道是用哪个选项运行的了。
Blog Huuyoo
下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。
第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下
#if
!defined WZDCOMMANDLINEINFO_H
#define
WZDCOMMANDLINEINFO_H
// WzdCommandLineInfo.h : header file
//////////////////////////////////////////////////////////////////////////
// CWzdCommandLineInfo window
class
CWzdCommandLineInfo :
public
CCommandLineInfo
{
// Construction
public :
CWzdCommandLineInfo( ) ;
// Attributes
public:
BOOL
m_bCFlag;
BOOL
m_bSFlag;
BOOL
m_bPFlag;
CString
m_sArg;
// Operations
public:
void
ParseParam(const
TCHAR*
pszParam,BOOL
bFlag,
BOOL
bLast);
// Overrides
// Implementation
public:
virtual ~CWzdCommandLineInfo();
} ;
//////////////////////////////////////////////////////////////////////////
#endif
头文件结束,下面是CPP文件
// WzdCommandLineInfo.cpp : implementation file
//
#include
"stdafx.h"
#include
"WzdCommandLineInfo.h"
#ifdef
_DEBUG
#define
new
DEBUG_NEW
#undef
THIS_FILE
static
char
THIS_FILE[] =
__FILE__;
#endif
//////////////////////////////////////////////////////////////////////////
// CWzdCommandLineInfo
CWzdCommandLineInfo::CWzdCommandLineInfo(
)
{
m_bCFlag =
FALSE ;
m_bSFlag =
FALSE ;
m_bPFlag =
FALSE;
m_sArg =
_T(" ") ;
}
CWzdCommandLineInfo::~CWzdCommandLineInfo(
)
{
}
//////////////////////////////////////////////////////////////////////////
void
CWzdCommandLineInfo::ParseParam(const
TCHAR*
pszParam,
BOOL
bFlag,
BOOL
bLast)
{
CString
sArg(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
else
if (m_strFileName.IsEmpty())
{
m_sArg =
sArg ;
}
CCommandLineInfo::ParseParam(pszParam,
bFlag,
bLast ) ;
}
第二步:在APP类中添加成员变量:
public:
CWzdCommandLineInfo
m_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))
return
FALSE;
如此即可以在程序的其它地方通过AfxGetApp()->m_cmdInfo取得CWzdCommandLineInfo对象,然后通过判断起成员变量m_bCFlag等等就能知道是用哪个选项运行的了。
相关文章推荐
- MFC程序带参数运行
- MFC程序带参数运行
- MFC程序带参数运行实例
- MFC程序带参数运行
- MFC程序带参数运行实例
- MFC程序带参数运行
- VS2013中MFC程序最大化运行遮盖任务栏的解决办法
- MFC中添加Richedit2.0控件导致程序无法运行的解决方法
- 如何让MFC程序只能运行一个?
- 运行MFC程序提示没有找到MFC42D.DLL文件的解决方法
- 在 Eclipse 中运行带参数的 Java 程序
- VC/MFC中计算程序运行时间
- MFC程序只运行一个实例
- VC/MFC中计算程序/系统运行时间
- MFC关于解决点击关闭,对话框仍有后台程序运行问题
- Ubuntu下Eclipse中运行Hadoop程序的参数问题
- eclipse下添加GCC编译器的编译链接库以及程序运行参数方法
- MFC程序提升运行权限
- mfc程序长时间运行后报错:a required resource was unavailable
- 在运行MFC程序的Release版本时,断点断在"INT_PTR nResponse = dlg.DoModal();"这句话上的处理