mfc dialog

JaD

Mitglied
Hallo,
also, ich bin noch ziemlich neu in der Programmierung.
Ich habe mich jetzt mit einem Buch an Visual C++ herangewagt.
Mein Problem ist jetzt, dass ich eine Toolbox erstellen möchte, aus der ich verschiedene Anwendungen starten kann, ich aber nicht weiß, wie man sowas macht ^^
Wär super, wenn mir jemand helfen könnte.
Gruß JaD
 
Zuletzt bearbeitet:

MCoder

Erfahrenes Mitglied
Hallo,

sollte so funktionieren:
C++:
CMeinDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
Code, der auf die vorherigen Fensterklassen verweist, solltest du rauswerfen. Falls es nicht funktioniert, würde ich eine neues Projekt aufsetzen, das dialogbasiert ist. Dann bist du die ganzen Altlasten aus dem Beispielprojekt los.

Gruß
MCoder
 

JaD

Mitglied
oh, da bist du mir zuvorgekommen. hatte auch gerade festgestellt, dass man ja direkt dialogbasiert erstellen kann und meinen text hier geändert.
danke trotzdem :)
 

MCoder

Erfahrenes Mitglied
.
Mein Problem ist jetzt, dass ich eine Toolbox erstellen möchte, aus der ich verschiedene Anwendungen starten kann, ich aber nicht weiß, wie man sowas macht ^^
Gruß JaD
Das ist dann also jetzt die "richtige" Frage :)

Wie stellst du dir denn das Layout dieser Toolbox vor? Du könntest z.B. Buttons auf dem Dialog plazieren, von denen jeweils eine Anwendung gestartet wird.

Gruß
MCoder
 

JaD

Mitglied
Achso genau, zum Layout. Also, die Toolbox hat verschiedene Radio Buttons. Dann soll man einen auswählen ok drücken und *zack* öffnet sich das "fremde" Programm ^^.
Nur weiß ich einfach nicht, wie man ein fremdes Programm startet
 

JaD

Mitglied
Also, ich bin jetzt schon ein bißchen weitergekommen:
Code:
void CToolboxDlg::OnBnClickedRadio1()
{
	PROCESS_INFORMATION pi = {0}; 
	STARTUPINFO si = {sizeof(si)}; 
	si.wShowWindow = SW_NORMAL;

	CString CommandLine; 
	CommandLine = "C:\\Pfad\\Programm.exe ";
	::CreateProcess(CommandLine.GetBuffer(CommandLine.GetLength()), "", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 
	::WaitForSingleObject( pi.hProcess, INFINITE); 

	CloseHandle(pi.hProcess); 
	CloseHandle(pi.hThread);

}
Wenn ich den Dialog jetzt ausführe öffnet er das fremde Programm sofort, noch bevor ich in den Dialog komme und der Dialog hängt sich dann auf.:confused:
 

SunnyBunny

Mitglied
Naja, wieso er nun das externe Programm startet ohne das Du geklickt hast, kann ich mir nicht 100%ig erklären. Vielleicht weil ein Radiobutton am Anfang auf "true" gesetzt wird?
Auf jeden Fall solltest Du Dir einen Extra-Button machen z.B. "Gewähltes Programm starten", und dort dann eine if- oder switch-Abfrage zu den Radiobuttons machen, nach dem Motto:

Code:
switch(radiobuttongroup_int)
{
   case 0:
   {
      //Programm x starten
       //[...] Code
      break;
   }
   case 1:
   {
      //Programm y starten
      //[...] Code
      break;
   }
//und so weiter[...]
}

Hilft das weiter?
 
  • Gefällt mir
Reaktionen: JaD

JaD

Mitglied
Ok, wenigsten schon mal ein positives Zwischenergebnis.
Mit dem Switch öffnet er die Programme erst wenn ich auf Ok drücke... Im Moment aber leider erst mal alle und nicht nur das Ausgewählte :rolleyes: ^^
Naja, ich gucke mal weiter
Vielen vielen Danke dafür schonmal