永发信息网

mfc进度条不显示。

答案:2  悬赏:40  手机版
解决时间 2021-04-09 07:45
  • 提问者网友:泪痣哥哥
  • 2021-04-08 21:29
我拖控件里的进度条是可以的,但是自己用Create函数确显示不了。代码如下:
CProgressCtrl myCtrl;
myCtrl.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(10,10,200,30),
AfxGetMainWnd(), 1);
int nLower, nUpper;
myCtrl.GetRange( nLower, nUpper );
myCtrl.SetStep( (nUpper-nLower)/10 );
myCtrl.StepIt();
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-04-08 22:21
CProgressCtrl myCtrl; //放到头文件 里面定义

myCtrl.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(10,10,200,30),
this , 1);
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-04-08 22:53
这里只是优化而已。
--------------------
线程问题不是你这问题的重点。可以改用非模态方法创建,如果一直在循环里,进度条的进度显示你最好单弄一个线程,我看到你这里用了for循环,最好是在线程里,idok后dlg析构了,可能在短时间内造成你的dlg假死现象。你可以把声明dlg对象的代码 改成 new一个dlg指针 来替代(记得在dlg析构里delete this)

也许你是用domodle方法调用的dlg。把进度显示和里面的操作放到一个循环中时,线程的创建使用可以单查下教程了,具体要看你的工程需求你进度条具体的建立过程不知道有没有遗漏的,为dlg类的成员变量?
将 progress控件拖放到dlg上,包括step()
这种情况类似上面,m_pro。(这时vc会自动帮你把变量与控件建立好联系)

还有就是,再调用dlg对象可能会产生一些错误,大概就是你的对话框对象提前析构导致的,然后临时创建了一个包含进度条对话框。

也许你的工程是个文档工程,不要影响dlg的本身操作,当idok后调用一些列函数。

你的问题重点是那个无效句柄
你的无效句柄问题设个断点具体调试看看吧。我只能向你猜测几种可能。如果是这种情况,然后用mfc向导为他建立一个变量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯