控件怎么收到其他控件所引發的按鍵觸發消息或事件

控件如何收到其他控件所引發的按鍵觸發消息或事件
當控件A鍵入 上.下.左.右.Tab 按鍵時將焦點移至控件B時...請問控件B如何接收到控件A所引發的按鍵觸發消息或事件呢?

------解决方案--------------------
焦点移至控件B时,控件B会收到WM_SETFOCUS消息。子类化控件B,拦截一下这个消息就行了。示例代码:

.h 文件中:
private:	// User declarations
    void __fastcall NewProc(TMessage &Message);

.cpp 文件中:
__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);
}

------解决方案--------------------
你是说B获得焦点后,要知道上一个获得焦点的控件是什么吧?
------解决方案--------------------
俺貌似又看懂了。。。

WM_SETFOCUS 消息的 WPARAM 是上个失去焦点的控件的 HWND,例如焦点从A->B,
WM_SETFOCUS 的 WPARAM 就是 A 的 HWND



另外也可以自己定义消息来处理吧,比如A控件按下 -> 键后就发消息给B,把当前的按键放到消息参数中,B如果收到消息并且自己获得了焦点,就从消息参数中获取按键的信息
------解决方案--------------------
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);
}