可能重複:
Embedding HWND into external process using SetParent的各種問題,以嵌入窗戶進入外部進程
我試圖嵌入從我的過程中一個窗口,一個外部進程的使用窗口SetParent
功能,並遇到一些問題,我希望有人可以幫助我。首先,這裏是什麼,我目前在做我的窗口嵌入到應用程序中的輪廓:
WND myWindow; //Handle to my application window
HWND externalWindow; //Handle to external application window
SetParent(myWindow,externalWindow);
//Remove WS_POPUP style and add WS_CHILD style
DWORD style = GetWindowLong(myWindow,GWL_STYLE);
style = style & ~(WS_POPUP);
style = style | WS_CHILD;
SetWindowLong(myWindow,GWL_STYLE,style);
此代碼的工作和我的窗口出現在其他應用程序,但引入了以下問題:
- 當我的窗口獲得輸入焦點時,外部進程的主應用程序窗口失去焦點(即標題欄更改顏色)。
- 當我的窗口有焦點時,主應用程序的鍵盤快捷鍵命令不起作用。
有沒有人知道這些問題的解決方法?我希望我的窗口被視爲主應用程序的另一個子窗口。
謝謝。
我不知道這是正確的路要走。最有可能的一段時間後修復一個缺陷,你會發現另一個問題... – 2012-07-06 04:19:49
這不是很容易。你有外部窗口的代碼嗎?嘗試去爲MDI兒童!讓父母更容易提供一個窗口,然後窗口將成爲您的子窗口的父窗口/框架。如果你有代碼,有辦法做到這一點。您將不得不延長我相信的資源鏈。你有沒有機會讓你的孩子處理一個DLL? – 2012-07-06 05:31:19
@Mark Hall:你說得對,它似乎甚至是一個確切的副本。 – 2012-07-06 05:36:04