要自訂 Window Message 來觸發程序, 需要幾個工作
1.設計要被處發的程序 procedure eventProc(var msg: TMessage); 也就是實際的處理內容
2.宣告 Var eventHandle:Thandle; 定義識別碼 WM_MyMessage:Integer;
3.建立Handle eventHandle := AllocateHWnd(eventProc);
4.觸發方式 PostMessage(eventHandle, WM_MyMessage, wParam, lParam); 若無傳參數 wParam, lParam 可帶0
5;釋放Handle DeallocateHWnd(eventHandle);
自訂識別碼的參考方式
1.設計要被處發的程序 procedure eventProc(var msg: TMessage); 也就是實際的處理內容
2.宣告 Var eventHandle:Thandle; 定義識別碼 WM_MyMessage:Integer;
3.建立Handle eventHandle := AllocateHWnd(eventProc);
4.觸發方式 PostMessage(eventHandle, WM_MyMessage, wParam, lParam); 若無傳參數 wParam, lParam 可帶0
5;釋放Handle DeallocateHWnd(eventHandle);
procedure TForm1.eventPorc(var msg:TMessage); begin case msg.Msg of WM_MyMessage:begin {... 處理內容 ....} end; WM_DESTROY,WM_NCDESTROY:begin {注意,當程式發出 DeallocateHWnd(eventHandle) 系統會觸發此兩個訊息} end; else Msg.Result := DefWindowProc(eventHandle, Msg.Msg, Msg.wParam, Msg.lParam); end; end;
自訂識別碼的參考方式
Const WM_MyMessage = WM_USER + 數值; 或 WM_MyMessage := RegisterWindowMessage('My Message Event');