2009-09-08 9 views
0

J'ai récemment posé une question ici sur un problème de boîte de dialogue que j'avais, mais j'ai découvert que le problème réside dans un domaine si différent que je pensais intentionnellement que je vais reformuler ma question ici.Win32 Dialog fermeture au démarrage

Le problème est que j'ai travaillé sur un moteur de jeu DirectX10. Lorsque le moteur est installé, une boîte de dialogue devrait apparaître pour permettre à l'utilisateur de choisir les paramètres. Pour développer ceci j'ai créé une solution séparée (studio visuel 2008) où j'ai fait la ressource de dialogue et la fonction de proc. Je l'ai testé là-bas avec une petite fonction winmain et ça marche parfaitement.

Puis j'ai copié la ressource et tout le code sur mon moteur principal et je l'ai activé. La seule chose qui se passe est que la boîte de dialogue s'ouvre très rapidement et se ferme immédiatement sans même attendre l'entrée de l'utilisateur. En outre, la fonction MessageBox fait la même chose. J'ai traversé chaque étape, mais je suis vraiment coincé.

Pourrait-vous s'il vous plaît regarder le code pour moi et voyez si vous pouvez trouver ce que l'*bleep* se passe?


Il y a trois dossiers différents dans le zip. VKRenderer est la partie déchirante du moteur où le VKD3D10 est une implémentation DirectX10 du RenderDevice défini dans VKRenderer. Dans la solution VKRenderer, toutes les fonctions exportées sont exportées depuis VKD3D10. VKD3D10 construit en dll et VKRenderer en .lib. StartupTest utilise ensuite les builds pour essayer de démarrer le moteur. Le paramètre SettingsDialogTest est l'endroit où j'ai créé la boîte de dialogue des paramètres et toutes les ressources. Là, vous pouvez également trouver la version de travail de la boîte de dialogue des paramètres.

Le fichier ZIP peut être téléchargé here. (Le moteur est encore en développement, alors soyez gentil avec vous les commentaires: P) MERCI A TONNES À L'AVANCE

passe = AIDE

+0

OMG "enfer" est un mot si offensant. – jason

Répondre

0

Lors d'une supposition, essayez de changer:

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

Le premier est correct. IDD_SETTINGS n'est pas # défini comme un ID numérique, il est donc traité comme une chaîne par le compilateur de ressources. –

+0

Assez juste ... n'a pas remarqué que / – Goz