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-Objekt
    

    Wenn 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. ]


Anmelden zum Antworten