[问题]MFC 类似PROGRESSBAR的功能

楼主: asdfg1597860 (Jay)   2018-05-28 16:40:48
开发平台(Platform): (Ex: Win10, Linux, ...)
WIN7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
MFC2003
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
如题 小弟想要在按下某个按钮时出现一个Dialog
由于不想让FUNCTION里运算的资料停下来
所以我做了一个Modeless的Dialog让它可以边运算边显示Dialog
点选按钮后会跳出Messagebox
如果是IDOK
则出现Dialog
可能是因为create的特性出现的Dialog不是完整的(只显示title)
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
Dialog 里 CStatic 及两个button无法显示
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
void Function()
{
pModeless = new CModeless(this);
pModeless->create(IDD_DIALOG);
pModeless->ShowWindow(SW_HIDE);
呼叫Messagebox
Switch 是否为IDOK
{
pModeless->ShowWindow(SW_SHOW);
计算...
...
}
if(pModeless != NULL)
pModeless->OnCancel();
}
补充说明(Supplement):
请各位高手给小弟一点意见
作者: Schottky (顺风相送)   2018-05-28 21:52:00
有没有发现运算时你的整个程式都卡住不动了
楼主: asdfg1597860 (Jay)   2018-05-28 23:35:00
这到是没有欸 过程鼠标会转圈圈 圈圈转完dialog就会完全显示计算也完成了
作者: Schottky (顺风相送)   2018-05-29 03:25:00
本来想写一篇来解释,不过刚好搜寻到板上有一篇不错的文#1GnfbVvR 跟我要讲的东西大致相同,可以参考看看把 PeekMessage 那几行插在ShowWindow之后以及计算中途你就会看到 modeless dialog 被画完以及进度条被更新开 thread 的方法较正统,PeekMessage 法较偷懒简便简单说就是 message queue 要有人去处理,画面才会更新,鼠标点按钮才会有反应等等
楼主: asdfg1597860 (Jay)   2018-05-29 09:06:00
谢谢Schottky大大 问题解决了 看来我对MFC架构不够熟
作者: james732 (好人超)   2018-05-31 00:49:00
想要熟MFC架构非常困难啊 XD
楼主: asdfg1597860 (Jay)   2018-06-01 00:17:00
目前我也只有套套function而已 架构还真的不了解

Links booklink

Contact Us: admin [ a t ] ucptt.com