//注意:在BOOL CXXXApp::InitInstance()里面
//如果在CXXXDlg dlg; 之前加入,这个过程就是程序框架出来之前。
//简介 LPTSTR WINAPI GetCommandLine(void);
//没有参数,返回是一个LPTSTR类型的字符串指针,即命令行参数的字符串。
// LPWSTR *CommandLineToArgvW(
// LPCWSTR lpCmdLine,
// int *pNumArgs);
//定义int接收参数个数
int nArgs = 0;
//此项单独用来读取参数个数,用于一些需要先判断个数的程序
CommandLineToArgvW(GetCommandLineW(), &nArgs);
if (nArgs>=2)
{
//处理过程
}
//定义接受参数数据结构
LPWSTR *szArglist = NULL;
//获取参数 以及参数个数。
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL != szArglist)
{
//szArglist就是保存参数的数组
//nArgs是数组中参数的个数
//数组的第一个元素表示程序本身,也就是szArglist[0],
//其他的元素依次是输入参数
}
//取得参数后,释放CommandLineToArgvW申请的空间
CString str;
for (int i=1;i<nArgs;i)
{
//处理szArglist[i]过程
}
//释放szArglist
LocalFree(szArglist);
//如需要直接退出
//exit(0);
以下为参考资料
让MFC程序支持命令行参数
一般情况下,如果我们的VC工程是Console控制台类型或者是Win32类型的情况下,这两类的工程类型比较容易获得命令行参数,
即,通过其入口点函数
int main(int argc, char *argv[])
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
但是,如果我们的工程类型是MFC对话框或单文档类型的话,如何让我们的程序支持命令行参数呢?
系统没有为我们提供好,那我们只有自己获取了……
一般情况下,需要在MFC程序的主线程初始化函数中进行处理,主线程的初始化函数即:
BOOL CProjCleanerApp::InitInstance(),这里面我们假设工程的名字是ProjCleaner,CProjCleanerApp 即主线程类。
在 BOOL CProjCleanerApp::InitInstance() 函数中进行程序的初始化以及对话框界面的显示工作,其大致代码如下:
BOOL CProjCleanerApp::InitInstance()
{
//省略的其他代码……;
CWinApp::InitInstance();
//省略的其他代码……;
CProjCleanerDlg dlg; //新建主对话框类型对象;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal(); //进行模态对话框的显示;
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-37210-1.html
我军至少要有动作
如果生虫是真的
終於回來了