VS2010 MFC Dialog实现程序自动重启

VC++ 学习 专栏收录该内容
45 篇文章 0 订阅

    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


版权声明:本文为博主原创文章,转载请注明出处。

  • 1
    点赞
  • 2
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值