2009-09-08 110 views
0

最近,我問了一個問題在這裏關於對話框的問題我有,但我發現,問題出在這樣一個不同的區域我故意以爲我會在這裏改寫我的問題。Win32的對話框關閉在啓動

的問題是,我一直工作在DirectX10的遊戲引擎。當發動機進入時,應該彈出一個對話框,讓用戶選擇設置。爲了開發這個,我創建了一個單獨的解決方案(visual studio 2008),在這裏我創建了對話框資源和proc函數。我用一個小的Winmain函數在那裏測試它,它的工作原理非常完美。

然後我複製的資源,所有的代碼,我的主要引擎,併發射它。發生的唯一情況是該對話框很快彈出,並立即關閉,甚至沒有等待用戶輸入。此外,MessageBox函數也執行相同的操作。我經歷了每一步,但我很困難。

可以在任何你請看看我的代碼,看看是否能找到什麼*嗶嗶*是怎麼回事?


有在zip三個不同的文件夾中。 VKRenderer是引擎的重要組成部分,其中VKD3D10是VKRenderer定義的RenderDevice的directX10實現。在VKRenderer解決方案中,所有導出的函數都從VKD3D10導出。 VKD3D10生成一個dll,VKRenderer生成一個.lib。然後是StartupTest,它使用構建來嘗試啓動引擎。 SettingsDialogTest是我創建設置對話框和所有資源的地方。在那裏你還可以找到設置對話框的工作版本。

ZIP文件可以下載here。 (發動機仍處於開發階段,所以用你的意見是類型:P)非常感謝噸ADVANCE

通= HELP

+0

OMG「地獄」是這樣的進攻字。 – jason 2009-09-08 22:48:34

回答

0

在猜測,嘗試改變:

INT_PTR i = DialogBoxParam(hinst, L"IDD_SETTINGS", hwnd, DlgProcWrapper,(LPARAM) this); 

INT_PTR i = DialogBoxParam(hinst, MAKEINTRESOURCE(IDD_SETTINGS), hwnd, DlgProcWrapper,(LPARAM) this); 
+0

前者正確。 IDD_SETTINGS未被定義爲數字ID,因此被資源編譯器視爲字符串。 – 2009-09-09 17:47:53

+0

夠公平......沒有注意到/ – Goz 2009-09-09 18:20:22