MFC之對話方塊 新增狀態列 實時顯示時間

2021-08-07 07:50:33 字數 2357 閱讀 4747

環境: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...