求助:关掉对话框却没有退出进程 MFC

xgnew 2009-09-10 03:49:14
如题,请各位帮我看看。

我用MFC做了一个串口发送的程序。
界面在一个dialog上。点击发送文件的按钮,会根据文件内容里的配置信息来配置串口参数,发送文件的数据内容。可以在文件里配置延时标志,如 Delay20 表示延时20*100ms。
我在实现这个延时功能时,起初用了sleep()。当程序运行时,界面不会响应,像死机一样,因为被挂起了,根本就没占用CPU。
按理说该用多线程做,但是我现在还不会多线程,就找了段代码,在单线程里做。
//Sleep(delayTime);
DWORD dwStart = GetTickCount() ;
DWORD dwEnd = dwStart ;
do
{
MSG msg ;
GetMessage(&msg, NULL, 0, 0) ;
TranslateMessage(&msg) ;
DispatchMessage(&msg) ;
dwEnd = GetTickCount() - dwStart ;
} while(dwEnd < delayTime);
这样可以在延时等待时接收消息。
但问题是,关掉对话框后,进程并没有退出。
我在OnDestroy()里加了一句
PostQuitMessage(0) ;
关掉对话框后,还是不能退出进程。

我刚开始用VC写上位机程序,很菜,依葫芦画瓢的写代码,原理还没搞清楚。请高手指点一下,谢谢!
PS:好像我还没分,等我灌水挣分了补上。
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xgnew 2009-09-10
  • 打赏
  • 举报
回复
ding
我怀疑PostQuitMessage(0) ;送出的WM_QUIT消息没有进入消息循环
xgnew 2009-09-10
  • 打赏
  • 举报
回复
LS的,这一句加在哪,是在OnDestroy()里吗?
好像参数不对
qq539929779 2009-09-10
  • 打赏
  • 举报
回复
::EndDialog(0);
试试
xgnew 2009-09-10
  • 打赏
  • 举报
回复
谢谢啊。
但是我没有去新建线程,能说的详细点吗?
如果是新建了线程,这样退出呢?

fengrx 2009-09-10
  • 打赏
  • 举报
回复
感觉还是多线程的原因,主对话框占用一个线程,你的程序应该又新建了一个线程吧。

退出时,要使用程序结束新创建的线程,然后执行退出。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧