class cgradientprogressctrl : public cprogressctrl
// 顯示百分比
void showtext(bool bshowtext = true) // 顯示文字
public:
colorref gettextcolor(void) // 取得字型顏色
colorref getbkcolor(void) // 取得背景顏色
colorref getstartcolor(void) // 取得開始顏色
colorref getendcolor(void) // 取得結束顏色
void setstartcolor(colorref color) // 設定字型顏色
void setendcolor(colorref color) // 設定背景顏色
void settextcolor(colorref color) // 設定開始顏色
void setbkcolor(colorref color) // 設定結束顏色
private:
void draw(cpaintdc* pdc, const rect& rectclient, const int& nmaxwidth);
afx_msg void onpaint();
declare_message_map()
private:
// 變數定義
int m_nlower ; // 最小值
int m_nupper ; // 最大值
int m_nstep ; // 步進值
int m_ncurpos ; // 當前值
colorref m_clrstart ; // 起始顏色
colorref m_clrend ; // 結束顏色
colorref m_clrbkground ; // 背景顏色
colorref m_clrtext ; // 文字顏色
bool m_bshowpercent ; // 顯示百分比
bool m_bshowtext ; // 顯示文字
char m_text[32] ; // 文字:如顯示拷貝速度
char m_percent[4] ; // 文字:百分比
cbrush m_bkgroundbrush ; // 背景刷子
cbrush m_tempbrush ; // 臨時刷子
private:
// 內嵌類
class cmemdc : public cdc // 記憶體裝置環境
else //為相關的現有裝置準備列印
}virtual ~cmemdc()
else
}cmemdc* operator->()
operator cmemdc*()
private:
cbitmap m_bitmap;
cbitmap* m_poldbitmap; //
cdc* m_pdc; //
crect m_rect; //
bool m_bmemdc; //
};cgradientprogressctrl::cgradientprogressctrl()
cgradientprogressctrl::~cgradientprogressctrl()
begin_message_map(cgradientprogressctrl, cprogressctrl)
on_wm_paint()
end_message_map()
/// cgradientprogressctrl 訊息處理程式
void cgradientprogressctrl::setrange(int nlower, int nupper)
int cgradientprogressctrl::setstep(int nstep)
int cgradientprogressctrl::setpos(int npos)
int cgradientprogressctrl::settext(const char * ptext, bool brepaint)
return 0;
}void cgradientprogressctrl::onpaint()
// 繪製進度條本身
float maxwidth((float) m_ncurpos /(float) m_nupper*(float) rectclient.right);
draw(&dc, rectclient, (int) maxwidth);
// 文字顯示
dc.settextcolor(m_clrtext);
dc.setbkmode(transparent);
hgdiobj holdfont = ::selectobject(dc.m_hdc, ::getstockobject(default_gui_font));
if (m_bshowpercent)
if (m_bshowtext)
::selectobject(dc.m_hdc, holdfont);
// 不要呼叫 cprogressctrl::onpaint()
}void cgradientprogressctrl::draw(cpaintdc* pdc, const rect& rectclient, const int& nmaxwidth)}}
實現乙個彩色進度條
顯示序列 033 0m 關閉轉義序列 033 1m 粗體或高亮 033 5m 閃爍 前景顏色序列 033 30m 黑 033 31m 紅 033 32m 綠 033 33m 黃 033 34m 藍 033 35m 洋紅 033 36m 青 033 37m 白 背景顏色序列 與前景顏色對對應,前景色是...
封裝乙個進度條
1.首先定義乙個處理資料需要產生進度的介面和抽象類 1 namespace progress.core 26 posscesscompleted mposscesscompleted 7 thread mthread 8bool isstop 9void start 10 11public dele...
shell指令碼實現乙個彩色的進度條
首先來了解一下如何設定終端的字元顏色 終端的字元顏色由轉義序列 escape sequence 控制,是文字模式下的系統顯示功能,與具體語言無關。轉義序列以控制字元 esc 開頭。該字元的ascii碼十進位制表示為27,十六進製制表示為0x1b,八進位制表示為033。多數轉義序列超過兩個字元,故通常...