Announcement

Collapse
No announcement yet.

Kommandozeile auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kommandozeile auslesen

    Ich verwende Visual C++ 2008 Professional.

    Ich möchte Kommandozeilen in meinem Programm abfangen.
    Dazu wurde die Merthode InitInstance der App-Klasse wie folgt angepasst:
    Code:
    BOOL CKommandozeileApp::InitInstance()
    {
    ...
    	//CCommandLineInfo cmdInfo;
    	CMeineKommandozeile cmdInfo;
    	ParseCommandLine(cmdInfo);
    ...
    	// Das einzige Fenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden.
    	//m_pMainWnd->ShowWindow(SW_SHOW);
    	m_pMainWnd->ShowWindow(m_nCmdShow);
    	m_pMainWnd->UpdateWindow();
    ...
    }
    Die Klasse CKommandozeile existiert.
    Datei kommandozeile.h:

    Code:
    #pragma once
    #include "afxwin.h"
    
    class CMeineKommandozeile :
    	public CCommandLineInfo
    {
    public:
    	CMeineKommandozeile(void);
    	~CMeineKommandozeile(void);
    	virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
    };
    Datei kommandozeile.cpp
    Code:
    #include "StdAfx.h"
    #include "MeineKommandozeile.h"
    
    CMeineKommandozeile::CMeineKommandozeile(void)
    {
    }
    
    CMeineKommandozeile::~CMeineKommandozeile(void)
    {
    }
    
    
    void CMeineKommandozeile::ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast)
    {
    	if(lstrcmpA(pszParam,"min")==0) AfxGetApp()->m_nCmdShow=SW_SHOWMINIMIZED;
    	else if(lstrcmpA(pszParam,"max")==0) AfxGetApp()->m_nCmdShow=SW_SHOWMAXIMIZED;
    
    	CCommandLineInfo::ParseParam(pszParam, bFlag, bLast);
    }
    Laut Debugger wird in der Zeile CMeineKommandozeile cmdInfo; der Konstruktor der Klasse CMeineKommandozeile aufgerufen.

    Ein Aufruf der Methode CMeineKommandozeile::ParseParam() erfolgt leider nicht.
    Diese hätte aber bei ParseCommandLine(cmdInfo); aufgerufen werden sollen. Tut es aber nicht.

    Was muss geändert werden, damit CMeineKommandozeile::ParseParam() verwendet wird?

    Danke

  • #2
    http://asg.unige.ch/Past/fuentes/Mfc/HowTo_10.html
    Christian

    Comment


    • #3
      Wenn ich die Zeile: m_pMainWnd->ShowWindow(m_nCmdShow); durch m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); ersetze, wird das Fenster im Vollbildmodus dargestellt.
      Mein Problem ist immer noch, dass m_nCmdShow nicht richtig gesetzt ist, da meine ParseParam() nicht aufgerufen wird.

      kuemmelchen

      Comment


      • #4
        Nunja, du rufst diese Methode ja auch nirgends auf (außer in der Methode selber, die Superklasse). Warum sollte sie dann ausgeführt werden? Wann, von wem?
        Christian

        Comment


        • #5
          Soweit ich verstanden habe, wird über ParseCommandLine(cmdInfo) die Funktion ParseParam() aufgerufen.
          cmdInfo ist mein Objekt der Klasse CMeineKommandozeile, die von CCommandLineInfo abgeleitet ist. So hätte also mein ParseParam() aufgerufen werden sollen.

          kuemmelchen

          Comment


          • #6
            ok, versuch es mal wie in diesem Beispiel und führe die Änderung nicht beim parsen durch, sondern danach http://forums.codeguru.com/showthrea...FC-application
            Christian

            Comment


            • #7
              Jetzt funktioniert es.
              In den Projekt-Eigenschaften habe ich im Feld Zeichensatz den Wert "Unicode-Zeichensatz verwenden" durch "Nicht festgelegt" ersetzt
              (siehe http://forums.codeguru.com/showthrea...FC-application und dazu die zweite Antwort).

              Danke Christian Marquardt.

              Comment

              Working...
              X