www.gusucode.com > 一个VC++语法分析模块程序实例源码程序 > 一个VC++语法分析模块程序实例/CompileSys/CompileSys/IDE/ProgressStatusBar.cpp
// PktStatusBar.cpp : implementation file // Download: http://www.codesc.net #include "stdafx.h" #include "ProgressStatusBar.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CProgressStatusBar CProgressStatusBar::CProgressStatusBar() { m_clrBk=RGB(0xE6,0xE6,0xFA);// _T("淡紫色") }, m_clrEnd=RGB(0x00,0x93,0x00);// _T("绿色") }, m_clrText=RGB(0x00,0x00,0x00);// _T("黑色") }, m_clrStart=RGB(0xFF,0xFF,0x00);// _T("黄色") }, m_range = 1000; bIsStop=false; m_hThread=NULL; } CProgressStatusBar::~CProgressStatusBar() { } BEGIN_MESSAGE_MAP(CProgressStatusBar, CStatusBar) //{{AFX_MSG_MAP(CProgressStatusBar) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CProgressStatusBar message handlers UINT RunProc(LPVOID pParam) { CProgressStatusBar* m_wndStatusBar=(CProgressStatusBar*)pParam; m_wndStatusBar->m_ctlProgress.SetRange(0,m_wndStatusBar->m_range); m_wndStatusBar->m_ctlProgress.SetStartColor(m_wndStatusBar->m_clrStart); m_wndStatusBar->m_ctlProgress.SetEndColor(m_wndStatusBar->m_clrEnd); m_wndStatusBar->m_ctlProgress.SetBkColor(m_wndStatusBar->m_clrBk); while(!m_wndStatusBar->bIsStop) { for(int i=0;i<=m_wndStatusBar->m_range;i++) { m_wndStatusBar->m_ctlProgress.SetPos(i); } for(i=0;i<=m_wndStatusBar->m_range;i++) { m_wndStatusBar->m_ctlProgress.SetPos(m_wndStatusBar->m_range-i); } } return 0; } int CProgressStatusBar::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CStatusBar::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP; if(!m_ctlProgress.Create(dwStyle,CRect(100,0,350,18),//left,bottom,right,top this,IDC_PROGRESS)) { TRACE(_T("Failed to create output window.\n")); return -1; } return 0; } bool CProgressStatusBar::StartRun() { //创建线程函数 m_hThread=::AfxBeginThread(RunProc,this); bIsStop=false; return true; } void CProgressStatusBar::StopRun() { bIsStop =true; } void CProgressStatusBar::SetViewProgress(bool bIsView) { m_ctlProgress.ShowWindow(bIsView); }