MFC常见问题

在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程序,并且自动执行,最后自动退出程序。

文章目录
  1. 1. 在MFC程序中,可以用以下几种方法来获取命令行参数。
    1. 1.1. 方法一
    2. 1.2. 方法二
    3. 1.3. 方法三
  2. 2. 让MFC程序在命令行运行,并传入参数,之后直接自动退出程序
    1. 2.1. MFC主窗口调用某个子dialog
    2. 2.2. 利用向导添加WM_TIMER的事件处理函数。
    3. 2.3. 在子Dialog的类中,利用向导添加OnInitDialog()函数,就是在显示Dialog前处理一下问题
    4. 2.4. 注意:
  3. 3. 总结:
,