不使用HOOK實現系統選單的自繪

2021-05-27 02:54:45 字數 368 閱讀 1905

這篇文章的作者很大程度上簡化了選單的自繪,缺陷是沒有實現系統選單的自繪,第二次彈出系統選單的時候才開始自繪,有時候一直都是預設的系統選單,不穩定。問什麼第一次彈出的時候沒有自繪???那我要是在wm_initmenu和wm_initmenupopup子前的訊息中就修改系統選單項可不可以?答案是可以的。我們在基於對話方塊的程式中預設的mfc會給我們新增乙個about對話方塊的選單項,是在wm_initdialog訊息中新增的,這說明這時系統選單建立,我們可以在這修改系統選單項的屬性。在單文件的程式裡可以在cmainframe::oncreate中修改系統選單項的自繪屬性。

修改之後響應對話方塊的wm_measureitem和wm_drawitem訊息就可以輕輕鬆鬆的自繪出穩定的系統選單。

原始碼:

不使用系統API來實現互斥保護功能

一般臨界資源的互斥保護,需要使用類似take mutex give mutex 類似的系統api來實現,一般需要從使用者空間切換到核心空間,有時候可能要關中斷等,為了實現乙個開銷小的,volatile int a 0 volatile int b 0 執行緒 a void thread a else...

關於Hook的不當使用和系統熱鍵的使用範例

關於hook的不當使用和系統熱鍵的使用範例 binsweet gmail.com 要設定快捷鍵必須使用user32.dll下面的兩個方法。bool registerhotkey 註冊系統熱鍵的api函式 hwnd hwnd,int id,uint f odifiers,uint vk bool un...

使用mysql的mysqldump實現自動備份

使用mysql資料庫的mysqldump工具,可以實現資料庫的備份功能,如果在linux系統中配置好crontabs,就可以實現自動備份!bin bash 配置原資料庫連線資訊,即正在使用需要備份資料庫機器。source user uroot 如果就是在本機ip,即source host h127....