Popligen Dialog starten...
-
Hallo,
irgendwie schaffe ich es nicht einen simplen Dialog zu starten, der sich in einer anderen Datei befindet.
In anderen Programmen von mir klappt's, aber hier irgendwie nicht, aber ich weiß einfach nicht, wo der Fehler liegt, bzw. ob es überhaupt einen Fehler gibt. Das Problem habe ich manchmal, manchmal läuft aber alles perfekt (in anderen Projekten).
Alles was ich will ist einen Dialog per DialogBox () zu starten und den davon zurückgelieferten Wert mittels return in WinMain zurückzugeben.
Wie gesagt, in anderen Projekten klappt das alles, nur diesmal irgendwie nicht.
Zuerst wird die Datei mit dem Dialog geladen, was auch ohne Probleme funktioniert. Nachdem DialogBox dann ausgeführt wurde, prüfe ich mit GetLastError welcher Wert dort eingetragen wurde, was 1407 ist und 'Cannot find window class.' heißt. Aber welche Window-Class sucht er bei einem Dialog?!?
Ich lege mal den Code bei:int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { // 1 MB Speichernachricht falls InitializeProgram einen Fehlerwert zurück gibt TCHAR * szErrorBuffer = new TCHAR [1024]; // Wenn Fehler -> ausgehen if (!InitializeProgram (szErrorBuffer)) { // Nachricht ausgeben MessageBox (NULL, szErrorBuffer, TEXT ("Critical Error"), MB_ICONERROR | MB_OK); return 1; } // Weiter mit dem Hauptprogramm // hMod [MAINDIALOG] ist global und gesetzt! /* return */DialogBox (hMod [MAINDIALOG], TEXT ("HauptDialog"), NULL, DlgProc); int bla = GetLastError (); char blaa[1024]; wsprintf (blaa, TEXT ("%i"), bla); DEBUG (blaa); // eigenes Makro, gibt einfach eine MessageBox mit dem Inhalt aus. return 0; }Wie gesagt, alles läuft ohne Probleme, nur bei der DialogBox gibt's Probleme.
Ich hoffe mal, dass ich hier in diesem Forum richtig bin, ansonsten bitte verschieben. Ich hoffe auch, dass es halbwegs verständlich ist was ich irgendwie ein wenig bezweifel :pMfG plusman
-
Hi.
Ich bin nicht sicher aber es kann sein dass das mit deinem Dialog-Template
was nicht nicht stimmt. Ich hab sowas auch schonmal gemacht aber anders.
Ist zwar MFC Code vielleicht hilft's.void K_DriveEntry::Create( CWnd* ppkParentDialog ) { HINSTANCE lhInstance = AfxFindResourceHandle( MAKEINTRESOURCE( IDD_DRIVE ), RT_DIALOG ); ASSERT( lhInstance ); if( lhInstance != NULL ) { HRSRC lhResource = ::FindResource( lhInstance, MAKEINTRESOURCE( IDD_DRIVE ), RT_DIALOG ); ASSERT( lhResource ); HGLOBAL lhTemplate = ::LoadResource( lhInstance, lhResource ); ASSERT( lhTemplate ); DLGTEMPLATE* lptTemplate = ( DLGTEMPLATE* )::LockResource( lhTemplate ); HWND lhDlg = ::CreateDialogIndirect( lhInstance, lptTemplate, ppkParentDialog->m_hWnd, DialogProc ); ASSERT( lhDlg ); }; };
-
Mag mir wer erklären, was die Frage mit der MFC zu tun hat?
Verschoben.
-
Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC mit dem Visual C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
zeige mal die Resourcendatei mit dem Dialog und nenne deinen Compiler, es kann auch daran liegen.
-
Versuch es mal mit MAKEINTRESOURCE(ID_DEINES_DIALOGS) anstelle von TEXT ("HauptDialog") - ansonsten könnte ich mir nur noch vorstellen, dass dein Module-Handle nicht stimmt, oder dass du Controls verwendest, deren Fensterklassen noch nicht registriert sind -> InitCommonControls(Ex)
