文章分类
文章搜索
相关文章
GOOGLE 广告
捕获vcl控件的离开消息
class TEdit1:public TEdit{
public:
__fastcall TEdit1(TComponent* Owner):TEdit(Owner){
}
void __fastcall WndProc(TMessage& msg){
if( msg.Msg == WM_LBUTTONDOWN ){
Form1->Memo1->Lines->Add("WM_LBUTTONDOWN");
Application->OnMessage = PreProcessMsg;
}
TEdit::WndProc(msg);
}
void __fastcall PreProcessMsg(tagMSG &Msg, bool &Handled){
switch(Msg.message ){
case WM_LBUTTONDOWN:{
if( Msg.hwnd == Handle )
return;
else{
Form1->Memo1->Lines->Add("Leave");
//to something
Application->OnMessage = NULL;
}
return;
}
}
}
};
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TEdit1* edit = new TEdit1(this);
edit->Parent = this;
}
//说明:
程序逻辑:
(1)当单击进入 Edit 控件时,设置 Application 的 OnMessage 函数指针,使TEdit控件能够处理任何该应用程序的消息
Application->OnMessage = PreProcessMsg;
(2)在 Edit 控件的 PreProcessMsg 方法中检测 WM_LBUTTONDOWN 消息,若消息的发送者为自己,则不作处理,否则作离开处理
- 上篇文章:Delphi 中动态链接库(dll)的建立和使用
- 下篇文章:GDI+ for VCL基础 -- GDI+ 与 VCL
- 文章出处:CSDN







