現有:
窗口A,裡面有button1,按鈕事件是AfxMessageBox(L"我是窗口A的按鈕");
窗口B,裡面有button1。按鈕事件是AfxMessageBox(L"我是窗口B的按鈕");
使用以下代碼將button1發送到窗口B裡面去:
this->GetDlgItem(IDC_BUTTON1)->SetParent(FromHandle(hwnd_B));
已經成功將窗口A的button1發送到窗口B中!
但為何發送過去之後的button1事件失效了?窗口B中的兩個button都是執行AfxMessageBox(L"我是窗口B的按鈕");的代碼?
應該如何寫代碼,讓發送過去的按鈕依然執行"我是窗口A的按鈕"?
控件通知消息都是發給父窗口的,所以轉移後當然發給窗口A,你這種情況,應該直接派生BUTTON類,在BUTTON類裡處理反射的通知消息,就跟哪個父窗口無關了,因為無論誰是父窗口都會把這些通知消息反射給控件自己處理