【发布时间】:2013-02-18 05:51:10
【问题描述】:
我有一个 Win32 应用程序,它有一个对话框,仅当进程是重新启动的进程时才会执行某些操作。大纲如下:
#define CMDLINE_RESTART_PROCESS "--Restart"
BOOL CheckForProcessRestart()
{
LPTSTR szCmdLine = ::GetCommandLine()
return ::StrStr(szCmdLine, CMDLINE_RESTART_PROCESS) != NULL;
}
BOOL CMyDialog::InitInstance()
{
if(CheckForProcessRestart())
{
// Do something (like initialize certain variables, controls, etc)
}
// Rest of application
}
在我检测到进程是一个重新启动的进程并初始化这些控件和变量后,我的对话框将执行它的操作并关闭。
此对话框可通过主窗口中的菜单访问。点击那个菜单按钮,当这个对话框弹出时,它会再次检测到它是一个重新启动的进程,因为GetCommandLine()会得到原来的命令行参数。
我的问题是,有什么方法可以在我处理完命令行参数后重置它们?
谢谢!
【问题讨论】:
-
等等,您是否使用命令行参数从另一个程序集打开对话框?还是在主窗口和对话框之间共享命令行参数?如果是第一个,那么你不需要重置你的参数,如果是第二个,那么你不应该使用命令行参数。虽然我觉得我可能误解了你的问题。
-
@Antonijn,没有。我有一个应用程序可以执行某些操作,然后自行重新启动。重新启动后,这个对话框应该做一些特殊的事情。就是这样。
标签: c++ windows mfc command-line-arguments