環境:win7 ,vs2010 對話方塊程式。
語言:c++
功能:1.在對話方塊程式中新增狀態列 2.在狀態列中顯示時間。 3.時間實時更新。
邏輯:對話方塊中先手動新增狀態列。而後通過ctime類獲取系統時間實時顯示到某一控制項上。在主對話方塊中新增wm_timer訊息。一秒重新呼叫一次獲取時間函式及控制項顯示的東西。
缺點:未實現居中顯示。
一、.h檔案新增
public:
ctime t1;//例項化乙個時間類,用於儲存獲取的系統時間。
void showtimenow();//定時器呼叫的重新整理函式,將實時獲取的系統時間反覆寫入。
void initstatus();//初始化狀態列,此函式中將狀態列的顯示進行初始化。
//cstatic m_time;//這是乙個static控制項,也是顯示的實時時間。此處注釋掉了。
cstatusbar m_bar;//建立乙個狀態列例項。
crect rect; //例項乙個rect,這個東西後面對狀態列進行等分寬度用。
二、.cpp檔案中新增1.在oninitdialog()函式中新增
initstatus();
2.定義showtimenow(),以及initstatus()
void c*******dlg::initstatus()
; m_bar.create(this);
m_bar.setindicators(indicators,3);
getclientrect(&rect); //獲取當前對話方塊的寬度
cstring str1;
t1 = ctime::getcurrenttime();
str1=t1.format("%y年%m月%d日 %h:%m:%s");
//m_time.setwindowtexta(str1);
//設定狀態列前兩列顯示內容。使用函式為setpaneinfo(第幾列,手工新增的stringtable(相當於字串常量,等同於巨集定義乙個id 代表某一字串),顯示風格,顯示寬度)
m_bar.setpaneinfo(0,id_statusbar_0, sbps_popout ,rect.width()/3);
m_bar.setpaneinfo(1,id_statusbar_1, sbps_popout ,rect.width()/3);
//第三列顯示時間
m_bar.setpanetext(2, str1,1);
//設定狀態列填充顏色
m_bar.getstatusbarctrl().setbkcolor(rgb(255,255, 255));
//啟動定時器,settimer(id,間隔時間,視窗控制代碼(null時為預設))
settimer(1,1000,null);
repositionbars(afx_idw_controlbar_first,afx_idw_controlbar_last, afx_idw_controlbar_first);
}
void c******dlg::showtimenow()
三、由於狀態列前兩列用了stringtable,所以需要在資源檔案中stringtable中新建兩個id名為id_statusbar_0何id_statusbar_1。雙擊開啟stringtable,而後右鍵右側的**,選擇「新建字串"。在id行輸入對應的id名稱,標題欄填寫想要此id代替的內容。
四、為該對話方塊新增定時器
在程式的資源檔案中,右鍵該對話方塊。選擇類嚮導。
在彈出的訊息中新增如下**:
void c******dlg::ontimer(uint_ptr nidevent)
cdialogex::ontimer(nidevent);
}
五、軟體執行結果
六、注意事項
1、在析構函式中呼叫killtimer()是個不錯的選擇。
MFC對話方塊新增狀態列
方法一 1 新增string table資源,ids panel1和ids panel2的字串資源。2 新增成員變數 public cstatusbar m wndstatusbar 3 定義 static uint indicators 4 在對話方塊的初始化過程中新增以下 crect rect ...
MFC之為對話方塊視窗新增狀態列
與選單欄和工具欄一樣,也可以再對話方塊視窗中新增狀態列。下面給出本次試驗的demo 實現了乙個簡單的狀態列和視窗滑鼠位置的響應。1.我們需要在string table中新增兩個新的id id indicator x id indicator y,分別用來標識狀態列的兩個窗格。2.我們需要在dlg的標...
MFC 基於對話方塊 程式,如何新增狀態列
通過網上查資料和自己試驗,發現以下兩種方法 一 1 在要新增狀態列的對話方塊類的類定義中 cstatusbarctrl m statbar 2 在oninitdialog中或其它合適的訊息響應中加如下 函式可檢視msdn m statbar new cstatusbarctrl rect m rec...