06 10月 2007

BCB Override WndProc的兩種方法

有時,為了攔截自訂的Message,所以必須Override WndProc,在這邊有兩種方法可以選擇
1.
class TForm1 : public TForm
{
virtual void __fastcall WndProc(TMessage&);
//....
};


2.
/// Unit1.h
class TForm1 : public TForm
{
void __fastcall MyWindowProc(TMessage&);
//...
};

/// Unit1.cpp
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->WindowProc = this->MyWindowProc;
//...
}
兩種方法的差別在於,法一在程式開始執行時,收到系統Message時,就會跑進WndProc了;法二卻會先跑完TForm1()的Constructor後,才會開始處理系統送來的Message。

沒有留言: