VS2010 MFC Dialog 做了一个小项目,需要实现自动重启,搜了一些文章,各有优缺点,所以将这些文章做了一下简单的综合,下面是自己的实现过程,并附上了参考文章链接,希望能给新手带来帮助。
1. 先建一个VS2010 MFC Dialog 工程,此处之所以强调VS2010 是因为字符编码默认采用Unicode,即宽字符格式,如果在像VC6这种ANSI编码的直接看本文附的 "参考文章"即可。
具体实现过程不在赘述。
2. 定义 全局变量 bool g_bIsRunAgain = false; 此处也可以定义为主对话框的成员变量,并在OnInitDialog中初始化为false.
3. 主窗体添加 “重启” 按钮,并双击添加代码如下:
g_bIsRunAgain=true;//控制是否重新运行的变量
this->SendMessage(WM_CLOSE);
4. 在类向导中添加WM_CLOSE 消息,在OnClose()中添加如下代码:
if(g_bIsRunAgain)
{
//得到当前程序的路径;
wchar_t strPath[100];
GetModuleFileName(NULL,strPath,100);
STARTUPINFO StartInfo;
PROCESS_INFORMATION procStruct;
memset(&StartInfo, 0, sizeof(STARTUPINFO));
StartInfo.cb = sizeof(STARTUPINFO);
if( CreateProcess( (LPCTSTR) strPath,NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&StartInfo,&procStruct ) )
{
CloseHandle( procStruct.hProcess );
CloseHandle( procStruct.hThread );
}
}
CDialogEx::OnClose();
5. 调试运行即可实现重启功能。
参考文章:https://blog.csdn.net/foreverhuylee/article/details/22311161
https://blog.csdn.net/lvwx369/article/details/41865981
版权声明:本文为博主原创文章,转载请注明出处。