MFC MFC下建立基於對話方塊的狀態列

2021-08-27 21:29:14 字數 2547 閱讀 2263

1..h檔案中新增成員變數cstatusbar m_wndstatusbar;

2.在oninitdialog()中加入:

static uint indicators =

;if (!m_wndstatusbar.create(this) ||

!m_wndstatusbar.setindicators(indicators,

sizeof(indicators)/sizeof(uint)))

uint nid;        //控制狀態列裡面的分欄

m_wndstatusbar.setpaneinfo(0,nid,sbps_stretch|sbps_noborders,100);      //返回值存nid中

m_wndstatusbar.setpanetext(0,"就緒");

m_wndstatusbar.setpaneinfo(1,nid,sbps_normal,100);

m_wndstatusbar.setpanetext(1,"大寫");

m_wndstatusbar.setpaneinfo(2,nid,sbps_popout,100);

m_wndstatusbar.setpanetext(2,"數字");

//----------------讓這個狀態列最終顯示在對話方塊中-------------

repositionbars(afx_idw_controlbar_first,afx_idw_controlbar_last,0);

其中: static uint indicators最好寫在.cpp最開頭的位置,  id_separator等變數需要在string table中新增,注意id和值不能重複,標題任意,setpaneinfo中可以設定需要顯示的內容

即用 rec  ***rec指定了窗體顯示位置的情況下,狀態列的位置也需要手動指定,不然無法顯示出來

1..h宣告變數cstatusbar m_bar; //狀態列              crect m_statusbarrect;    //狀態列區域位置

2..cpp外部static uint based_code indicators = ;   //ids_bar_one宣告方法同上

3.oninit()中實現

//建立狀態列

m_statusbar.create(this);

m_statusbar.setindicators(indicators, sizeof(indicators) / sizeof(uint));

crect rect;

getclientrect(&rect);

m_statusbar.setpaneinfo(0, ids_bar_one, sbps_normal, rect.width()/4);

m_statusbar.setpaneinfo(1, ids_bar_two, sbps_stretch, rect.width()/4);

m_statusbar.setpaneinfo(2, ids_bar_three, sbps_stretch, rect.width()/4);

m_statusbar.setpaneinfo(3, ids_bar_four, sbps_stretch, rect.width()/4);

repositionbars(afx_idw_controlbar_first, afx_idw_controlbar_last, afx_idw_controlbar_first);

updatepannelposition();//設定各個rec的引數

4. 設定顯示位置(updatepannelposition();的部分實現)

getclientrect(&m_clientrect);

int cx = m_clientrect.right - 10;

int leftpanelwidth = 360, rightpanelwidth = 480;

if (cx <= 1440)

//狀態列

m_statusbarrect.top = m_clientrect.bottom - 40;      //高40px

m_statusbarrect.bottom = m_clientrect.bottom;       //緊貼視窗底部

m_statusbarrect.left = m_clientrect.left+10;             //左側距離10px

m_statusbarrect.right = m_clientrect.right-10;        //右側距離10px

m_bar.movewindow(m_statusbarrect);                //讓之前的m_bar顯示在我們指定的位置

1.新增wm_time訊息對映,就自動生成ontime函式了//關於mfc的ontimer的說明 2.

cdialogex::ontimer(nidevent);

}3.建立狀態列之後緊跟settimer(1, 1000, null);

成果如圖:

建立簡單對話方塊

簡單對話方塊playgame.cpp在搞了大約乙個星期左右,終於看見想要的框了,不過還不太完善,先寫出這個星期來所學到的問題吧!1.首先要定義資源 resource dialog r dlg player name dialog dlg line 2.接下來編寫對話方塊 executeld 用於裝載...

建立 AlertDialog對話方塊

對話方塊是一種顯示於 activity之上的介面元素,是作為 activity的一部分被建立和顯示的,常用的對話方塊種類有 提示對話方塊 alertdialog 進度對話方塊 progressdialog 日期選擇對話方塊datepickerdialog 時間選擇對話方塊 timepickerdia...

隱藏基於對話方塊程式

定義托盤響應訊息 define wm systray wm user 120 在標頭檔案中定義變數 windowplacement m wp 以便在恢復時使用 notifyicondata m tmid 托盤結構 crect m rectwnd 儲存視窗區域 在初始化函式中加入 getwindowr...