如何相應狀態列的滑鼠動作

2021-05-23 21:55:51 字數 1245 閱讀 8246

應用程式的狀態列是用於顯示程式狀態資訊用的,但有時我們可以採用一些技巧,使其可以響應滑鼠訊息,以執行某些操作(如顯示乙個快捷選單、彈出乙個對話方塊、改變狀態列的顯示資訊等等)。實現方法其實很簡單,我們可從標準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...