控件如何收到其他控件所引發的按鍵觸發消息或事件
當控件A鍵入 上.下.左.右.Tab 按鍵時將焦點移至控件B時...請問控件B如何接收到控件A所引發的按鍵觸發消息或事件呢?
[解决办法]
焦点移至控件B时,控件B会收到WM_SETFOCUS消息。子类化控件B,拦截一下这个消息就行了。示例代码:
.h 文件中:
private:// User declarations
void __fastcall NewProc(TMessage &Message);
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edit1->WindowProc = NewProc;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::NewProc(TMessage &Message)
{
if (Message.Msg == WM_SETFOCUS)
{
Memo1->Lines->Add("获得焦点");
}
Edit1->Dispatch(&Message);
}
void __fastcall TForm1::NewProc(TMessage &Message)
{
if (Message.Msg == WM_SETFOCUS)
{
HWND h = (HWND)Message.WParam;
TControl *p = FindControl(h);
Memo1->Lines->Add(String().sprintf(
"获得焦点, 上一个焦点来自: %s",
p? p->Name: String("未知")));
}
Edit1->Dispatch(&Message);
}