如何利用进度条来直观的反映程序启动的过程! 我的一个软件的启动很慢,约20秒,我想用一个进度条来反映程序启动过程,不至于让用户以为程序还没有启动。敬请各位大侠赐教一例! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请参照:http://expert.csdn.net/Expert/topic/2150/2150154.xml?temp=.1731989arxing(阿行)大哥的说法是可行的,你可以开一个线程来显示该对话框。我按照arxing(阿行)的方法解决了问题。 to ejiue(睡师)你的意思是dosomething在开的线程里面做吗? 那么慢的启动过程,肯定有一个Splash吧,为什么不直接在Splash上画图你,我就是这么干的:)先让Splash的CView比图形高一点,留出下面的空白做进度条,然后在CSplash类加几个变量int m_Percent = 0, 和一个方法:void SetCurState(int nPercent);设置m_Percent的值,同时让窗口重画void CSplashWnd::SetCurState(int nPercent, char* pTip)//pTip为需要在进度条上显示的信息,如果需要也得用全局变量CString m_strTip{ m_nPercent = nPercent; if(pTip) { m_strTip = CString(pTip); } InvalidateRect(CRect(0, m_bmHeight, m_bmWidth, m_bmHeight+ 19)); //m_bmHeight为图象的高,m_bmWidth为图象的宽,全局变量 UpdateWindow();}在OnPaint里原代码后面加入以下代码: //绘制初始化信息及进度CFont font; font.CreateFont(12, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "宋体"); CBrush brush1(RGB(255, 255, 255)); CBrush brush2(RGB(65, 116, 165)); int nWidth = (int)((float)m_bmWidth / 100.0 * (float)m_nPercent); dc.FillRect(CRect(0, m_bmHeight, m_bmWidth, m_bmHeight+19), &brush1); dc.FillRect(CRect(0, m_bmHeight, nWidth, m_bmHeight+19), &brush2); CFont* pOldFont = dc.SelectObject(&font); dc.SetTextColor(COLOR_WINDOWTEXT); dc.TextOut(4, m_bmHeight+3, m_strTip); dc.SelectObject(pOldFont); font.DeleteObject();在主窗口的CPP里#include “Splash.h”,在需要改变进度条信息的地方加 if(CSplashWnd::c_pSplashWnd) (CSplashWnd::c_pSplashWnd)->SetCurState(80, "正在初始化......");呵呵,看看怎么样,够专业吧?当然你还可以发挥的的想象,画出一个酷毙了的进度条! 关于数据结构的问题 想做谷歌音乐的桌面歌词秀,谁提供个下手方向? 有关CGfxOutBarCtrl类的问题 在VC7中用ACE_TASK会有问题,请教怎么解决 调查,各位工作在IT战线的朋友们,乙肝病毒携带者(HBVER)生存状况如何? ADO连接问题 【讨论】关于线程的错误,大家都进来看看~~~~~~~~~~~````` 关于win api 的加载资源位图的问题?一定给分!!!!!!!!!! 小弟急需文件操作和线程管理方面方法技巧的资料,望各位英雄赐教 哪有编程实例的书下载? smtp协议和pop3协议有什么区别? 请问怎样设计一个这样的结构呢
http://expert.csdn.net/Expert/topic/2150/2150154.xml?temp=.1731989arxing(阿行)大哥的说法是可行的,你可以开一个线程来显示该对话框。
我按照arxing(阿行)的方法解决了问题。
你的意思是dosomething在开的线程里面做吗?
void CSplashWnd::SetCurState(int nPercent, char* pTip)//pTip为需要在进度条上显示的信息,如果需要也得用全局变量CString m_strTip
{
m_nPercent = nPercent;
if(pTip)
{
m_strTip = CString(pTip); }
InvalidateRect(CRect(0, m_bmHeight, m_bmWidth, m_bmHeight+ 19));
//m_bmHeight为图象的高,m_bmWidth为图象的宽,全局变量
UpdateWindow();
}在OnPaint里原代码后面加入以下代码: //绘制初始化信息及进度
CFont font;
font.CreateFont(12, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "宋体");
CBrush brush1(RGB(255, 255, 255));
CBrush brush2(RGB(65, 116, 165)); int nWidth = (int)((float)m_bmWidth / 100.0 * (float)m_nPercent); dc.FillRect(CRect(0, m_bmHeight, m_bmWidth, m_bmHeight+19), &brush1);
dc.FillRect(CRect(0, m_bmHeight, nWidth, m_bmHeight+19), &brush2); CFont* pOldFont = dc.SelectObject(&font);
dc.SetTextColor(COLOR_WINDOWTEXT);
dc.TextOut(4, m_bmHeight+3, m_strTip);
dc.SelectObject(pOldFont);
font.DeleteObject();在主窗口的CPP里#include “Splash.h”,在需要改变进度条信息的地方加
if(CSplashWnd::c_pSplashWnd)
(CSplashWnd::c_pSplashWnd)->SetCurState(80, "正在初始化......");呵呵,看看怎么样,够专业吧?当然你还可以发挥的的想象,画出一个酷毙了的进度条!