自訂 Window Message 來觸發程序

1 篇文章 / 0 new
author
自訂 Window Message 來觸發程序
要自訂 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);

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');
Free Web Hosting