短版發揮很好 -製作VCL窗體和對話框與WINAPI窗口
我有使用WINAPI調用創建一個OpenGL窗口。我寧願保持這種方式,而不是將OpenGL包裝到VCL表單中。
爲了提供一些首選項菜單和文件對話框,我使用了VCL窗體和典型的對話框(TOpenDialog,TSaveDialog)。
我想知道的是 - 我如何獲得這些窗體和對話框來查看我的OpenGL窗口作爲它的所有者?
我試圖將窗口句柄傳遞給窗體,但我確信我正在做不正確的操作,因爲它沒有任何作用。
Form1 := TForm1.Create(nil);
Form1.ParentWindow := hwnd; //handle to OpenGL Window
什麼是VCL窗體需要爲了看到本機窗口作爲它的所有者?
長版本 -
我的應用程序有兩種模式。獨立模式,它獨立運行。其次,在主機應用程序的進程空間中運行的插件模式爲。
當處於獨立模式時,我對VCL窗體和對話框沒有任何問題。即使他們的所有權是不確定的,但它不會以任何方式影響可用性。
當處於插件模式時,我發現主機應用程序將控制我的VCL Forms的,並打開&保存對話框。
因此,當在主機的進程空間中運行時,我的VCL表單呈現出非常奇怪的狀態。我試圖手動修復它們,但它們不會響應樣式更改。
編輯 - 在對話框
我主要關注的細節是VCL形式呈現,但這裏有在對話框一些細節,如果它有什麼用途。
我執行的對話是這樣的:
if FileOpenDialog.Execute(hwnd) then
Begin
//open up file
End;
而且它沒有任何效果。對話框的行爲與我沒有通過它的句柄相同。請記住,我使用的是Delphi 2006,此版本的Delphi仍在使用Windows XP中引入的舊文件對話框。
最後 - 作爲插件運行時,我的打開/保存對話框將出現,就好像它們屬於任務欄上的主機應用程序一樣。所以,主持人有一個任務欄選項卡。我的應用程序也有它自己的Tab。當我執行它時,我的打開對話框出現在主機的選項卡上。
圖片
偏好菜單在單機模式:
偏好菜單的插件在主持人:
如果我可以簡單地改變顏色黑色的文字,這將是很好的恩ough,但我似乎無法做到。
我在原始問題中增加了一些細節。但我現在正在這樣做,無濟於事。 – AudioGL 2013-04-05 18:35:04
這不是回答關於窗戶所有者的問題嗎?你似乎很安靜。 – 2013-04-05 20:29:29
對不起,我正在吃午飯!我會試試這個。 – AudioGL 2013-04-05 20:30:34