標籤:win32 c++ windows 編程 mfc
定時器訊息
1、 WM_TIMER
按照定時器設定的時間段,自動向視窗發送一個定時器訊息WM_TIMER。優先順序比較低
定時器精度比較低,毫秒層級,訊息產生時間也精度比較低
2 、訊息和函數
WM_TIMER : 訊息ID
wParam 定時器的ID
lParam 定時器的處理函數
SetTimer :設定一個定時器
UINT_PTR SetTimer( HWND hWnd, // handle to window 視窗的控制代碼 可以為NULL UINT_PTR nIDEvent, // timer identifier定時器的ID 0為不預設ID UINT uElapse, // time-out value定時器時間間隔 TIMERPROC lpTimerFunc // timer procedure定時器的處理函數, 可以為NULL);
返回一個建立好的定時器ID
KillTimer : 結束一個定時器
BOOL KillTimer( HWND hWnd, // handle to window 視窗的控制代碼 UINT_PTR uIDEvent // timer identifier 定時器ID);
TimerProc : 定時器處理函數
VOID CALLBACK TimerProc(HWND hwnd, // handle to window視窗控制代碼 UINT uMsg, // WM_TIMER messageWM_TIMER訊息ID UINT_PTR idEvent, // timer identifier定時器ID DWORD dwTime // current system time當前系統時間);
3、使用方式
3.1 建立定時器
3.1.1 指定視窗控制代碼HWND 那麼TIMERPROC參數可以為空白,那麼WM_TIMER訊息將會發送給指定視窗,
如果未指定,TIMERPROC不可為空,必須指定定時器處理常式。
3.1.2 如果定時器ID SetTimer會按照這個ID建立定時器,如果未指定,會返回一個建立定時器ID
3.2 處理定時器訊息
可以根據訊息傳入定時器ID號 分別處理
3.3 結束定時器
在不使用時, KillTimer 結束定時器
菜單
1、菜單基礎
菜單- 每個菜單會有一個HMENU控制代碼
功能表項目:每個功能表項目會有一個ID號,可以根據這個ID執行不同的操作
2、菜單建立
2.1 菜單的建立
CreateMenu - MENU 菜單
CreatePopupMenu - POPUPMENU 彈出式菜單
AppendMenu - 增加功能表項目
BOOL AppendMenu( HMENU hMenu, // handle to menu菜單控制代碼 UINT uFlags, // menu-item options功能表項目標識 UINT_PTR uIDNewItem, // identifier, menu, or submenu功能表項目的ID或者內建單控制代碼 LPCTSTR lpNewItem // menu-item content功能表項目的名稱);
uFlags
MF_STRING - lpNewItem是一個字串
MF_POPUP - uIDNewItem是一個子功能表控制代碼
MF_SEPARATOR - 增加分割項
MF_CHECKET/MF_UNCHECKED -設定和取消功能表項目的對勾
MF_DISABLED / MF_ENABLE - 功能表項目禁止和允許狀態
2.2 菜單的命令響應
2.2.1 WM_CONMAND訊息
當使用者點擊菜單、按鈕控制項等時,系統會向視窗發送WM_COMMAND訊息。
WPARAM: HIWORD 通知訊息的標識
LOWORD 產生訊息ID號/或者其他一些東西
LPARAM: 控制項的控制代碼, 對於菜單為空白
2.2.2 命令處理
根據訊息項的ID號 作相應處理
2.3 功能表項目的狀態
2.3.1 WM_INITMENUPOPUP 訊息
當使用者點擊菜單顯示彈出式菜單之前,下同會向視窗發送WM_INITMENUPOPUP
WPARAM 是菜單控制代碼
LPARAM : LOWORD 菜單位置
HIWORD 是否是系統功能表
2.3.2 命令處理