應用程式的狀態列是用於顯示程式狀態資訊用的,但有時我們可以採用一些技巧,使其可以響應滑鼠訊息,以執行某些操作(如顯示乙個快捷選單、彈出乙個對話方塊、改變狀態列的顯示資訊等等)。實現方法其實很簡單,我們可從標準mfc類cstatusbar派生出乙個響應滑鼠訊息(左右鍵的單擊、雙擊)的派生類,然後在派生類中處理滑鼠訊息,從而完成一些功能。這些功能的實現原理都是大同小異的。下面以實現乙個狀態列開關控制為例,說明其用法。
(1)cstatusbar的派生類ctogglebar的定義如下:
class ctogglebar : public cstatusbar
}afx_msg
declare_message_map()
};
(2)派生類ctogglebar的實現**如下:
ctogglebar::ctogglebar()
begin_message_map(ctogglebar, cstatusbar)
//}afx_msg_map
end_message_map()
/
// ctogglebar message handlers
void ctogglebar::onlbuttondown(uint nflags, cpoint point)
(3)在框架類cmainframe的標頭檔案中定義該派生類:
#include "togglebar.h"
class cmainframe : public cframewnd
;
(4)在框架類cmainframe的實現檔案中定義狀態列上狀態格的相對位置:
static uint indicators =
;
(5)此後,就可以像對待標準的狀態列一樣進行初始化:
int cmainframe::oncreate(lpcreatestruct lpcreatestruct)
//注意:下面一句一定要寫明,否則會引起程式初始化錯誤
m_wndstatusbar.m_npaneid=id_indicator_mouse;
}
(6)以下**的作用是更新狀態條的顯示資訊
void cmainframe:: onupdatemousestate(ccmdui* pcmdui)
ribbon介面狀態列顯示滑鼠座標
實現功能 在ribbon介面下,開啟影象,滑鼠在影象上移動時,狀態列上實時顯示滑鼠所在位置的座標。方法 在mainframe類中新增如下函式 void cmainframe updatestatusbar int nid,cstring str m wndstatusbar.invalidate m...
狀態列的建立
讓對話方塊的狀態列顯示時鐘 滑鼠位置 滑鼠點的顏色資訊等 新增字串資源 id indicator pos 滑鼠所在位置 id indicator color 滑鼠位置顏色 id indicator time 當前系統時間 在對話方塊類標頭檔案中進行狀態列物件的定義 cstatusbar m wnds...
沉浸式狀態列 狀態列的實現封裝類
沉浸式狀態列有兩種方式 一 當狀態列下面是一張的時候,設定上面狀態列為透明,這樣狀態列就會被覆蓋 這裡為方便我設定了乙個button顏色為 ff4081 首先看下沒有設定沉浸式狀態列時的狀態列 設定狀態列的顏色 如下 if build.version.sdk int build.version co...