Aufrufparameter
-
Hi,
ich möchte bei meinem Programm folgendes machen:Wenn ich das Programm mit einem Parameter starte, soll getestet werden, ob dies ein Bild ist und wenn ja, dann mit Draw() gezeichnet werden.
Jetzt ist meine Frage, wo ich das machen kann?
Das muss ja zu einem Zeitpunkt geschehen, zu dem die Applikation schon vollständig geladen ist, oder?Gruss, Tobias
-
Kannst Dir doch die CommandLine holen und diese auswerten. Dazu muss die Applikation nicht vollständig geladen sein. Du kannst den Parameter auch vorher abfragen und danach ne bool-Variable setzen, und diese in OnPaint/OnDraw abfragen.
-
Hi Rene,
das mit der Variable wäre natürlich schon ne Idee von Dir!
Vielleicht mach ich das dann auch so!
Aber gibt es keine Funktion, die als "letztes" beim Initialisieren kommt?
Also so, dass ich genau danach das machen kann?
Gruss, Tobias
-
In einer SDI-Anwendung findet man folgende Sequenz:
CCommandLineInfo cmdInfo; ParseCommandLine( cmdInfo ); if ( !ProcessShellCommand( cmdInfo ) ) return FALSE;Zunächst wird damit ein Objekt der MFC-Klasse CCommandLineInfo generiert. Diese Klasse ermöglicht die Auswertung der Parameter, die in der Kommandozeile nach dem Programmnamen übergeben werden.
ParseCommandLine(...) ruft für jeden übergebenen Parameter die Funktion
void CCommandLineInfo::ParseParam( LPCTSTR lpszParam, BOOL bFlag, BOOL bLast )auf.
Die Funktion
BOOL CWinApp::ProcessShellCommand( CCommandLineInfo& rCmdInfo )kann anschließend in Abhängigkeit der erkannten Parameter in der Kommandozeile folgende Aktionen ausführen:
Parameter in Kommandozeile Resultierende Aktion ------------------------------------------------------------------------------ app Neues Dokument app filename Öffnet Datei als Dokument app /p filename Druckt Datei auf Standard-Drucker app /pt filename printer driver port Druckt Datei auf angegebenen Drucker app /Automation startet als Automation-Server app /dde wartet auf DDE-Befehle app /Embedding bearbeitet ein eingebettetes OLE-ObjektWenn Sie z.B. "<app-name>.exe SchoenesBild.bmp" unter Start - Ausführen angeben, entspricht dies "app filename" und die Anwendung startet mit diesem Bild. Sie müssen dann nur noch die entsprechende Funktionalität für die Bearbeitung von bmp-Dateien in der Anwendung implementieren.
Die o.g. Sequenz liegt in einer SDI-Anwendung zwischen
CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate ( IDR_MAINFRAME, RUNTIME_CLASS( C...Doc ), RUNTIME_CLASS( CMainFrame ), // Haupt-SDI-Rahmenfenster RUNTIME_CLASS( C...View ) ); AddDocTemplate(pDocTemplate);und
m_pMainWnd->ShowWindow( SW_SHOW ); m_pMainWnd->UpdateWindow();[ Dieser Beitrag wurde am 19.05.2003 um 23:22 Uhr von Erhard Henkes editiert. ]