在MFC程序中,可以用以下几种方法来获取命令行参数。
为方便说明,我们假设执行了命令:C:\test\app.exe -1 -2
方法一
::GetCommandLine();
将获取到 “C:\test\app.exe” -1 -2
方法二
for (int i=0;i<argc;i++)
{
argv[i];
将依次得到C:\test\app.exe -1 -2
}
方法三
AfxGetApp()->m_lpCmdLine;
将获取到 -1 -2
让MFC程序在命令行运行,并传入参数,之后直接自动退出程序
MFC主窗口调用某个子dialog
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){
SetTimer(1, 1000, 0);
}
利用向导添加WM_TIMER的事件处理函数。
void CMainFrame::OnTimer(UINT nIDEvent)
{
//首先停止计数器
KillTimer(1);
/添加你想要调用的子Dialog,并执行子Dialog/
PetriNetMC plg;
plg.DoModal();
CFrameWnd::OnTimer(nIDEvent);
}
在子Dialog的类中,利用向导添加OnInitDialog()函数,就是在显示Dialog前处理一下问题
BOOL PetriNetMC::OnInitDialog(){
CDialog::OnInitDialog();
/*这句话,可以获取父窗口的指针*/
CMainFrame *pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
/*添加要处理的事件*/
/*可以不用显示子窗口,直接退出程序*/
pMain->DestroyWindow();
return TRUE;
}
注意:
在这个过程中,可以从命令行获取参数,存入到父窗口即主窗口的成员变量中,在子窗口中调用pMain->xxx就可以获取该成员变量。
总结:
以上,就可以实现,在命令行直接调用一个MFC程序,并且自动执行,最后自动退出程序。