MFC中进度条怎么实现
答案:2 悬赏:60 手机版
解决时间 2021-03-12 06:31
- 提问者网友:绫月
- 2021-03-11 20:06
MFC中进度条怎么实现
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-03-11 21:28
以Dialog为例简单说明一下:
在Dialog上添加Progress Control控件, 关联控件变量为m_progress_demo;
在Dialog所属的类的OnInitDialog()函数里面(新类的话需要手工添加OnInitDialog()函数), 增加初始化处理: m_progress_demo.SetRange(0, 100);m_progress_demo.SetPos(0); 表示显示的进度为0~100之间,而且进度从0开始。
在需要进度条更新的场合下,比如进度20,增加:m_progress_demo.SetPos(20);
全部回答
- 1楼网友:迷人又混蛋
- 2021-03-11 22:47
你进度条具体的建立过程不知道有没有遗漏的?
将 progress控件拖放到dlg上,然后用mfc向导为他建立一个变量,m_pro,为dlg类的成员变量。(这时vc会自动帮你把变量与控件建立好联系)
还有就是,进度条的进度显示你最好单弄一个线程,不要影响dlg的本身操作。
--------------------
线程问题不是你这问题的重点,具体要看你的工程需求,我看到你这里用了for循环,如果一直在循环里,可能在短时间内造成你的dlg假死现象。把进度显示和里面的操作放到一个循环中时,最好是在线程里。这里只是优化而已,线程的创建使用可以单查下教程了。
你的问题重点是那个无效句柄
你的无效句柄问题设个断点具体调试看看吧。我只能向你猜测几种可能。
也许你的工程是个文档工程,然后临时创建了一个包含进度条对话框。如果是这种情况,大概就是你的对话框对象提前析构导致的。你可以把声明dlg对象的代码 改成 new一个dlg指针 来替代(记得在dlg析构里delete this)
也许你是用domodle方法调用的dlg,当idok后调用一些列函数,包括step()
这种情况类似上面,idok后dlg析构了,再调用dlg对象可能会产生一些错误。可以改用非模态方法创建。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯