# Visual C++ 6 MFC: Programm minimiert starten



## kk3003 (11. Dezember 2007)

Hallo Forum,

ich habe ein kleines Dialogprogramm geschrieben, dass sich wunderbar minimieren (Systray) und maximieren lässt. 

Nun meine Frage:
Wie erreiche ich es, dass das Programm nun bereits minimiert gestartet wird? Wie als würde der Computer  die "Minimieren"-Schaltfläche betätigen.

Eckdaten:
- Visual C++ 6
- Dialog-basierende Anwendung
- MFC


Gruß und danke für jede Hilfe
kk3003


----------



## kk3003 (11. Dezember 2007)

Bitte ins MFC-Forum verschieben!


----------



## MCoder (11. Dezember 2007)

Hallo, du kannst in "OnInitDialog()" ein "ShowWindow(SW_MINIMIZE);" unterbringen.

Gruß
MCoder


----------



## kk3003 (11. Dezember 2007)

Hi,

funktioniert leider nicht. 

Wo muss dieser Aufruf genau platziert werden?


```
/////////////////////////////////////////////////////////////////////////////
// CMyClassDlg Nachrichten-Handler

BOOL CMyClassDlg::OnInitDialog()
{
	/////////////////////////////////////
	/// START -> prevent double start of app
	/////////////////////////////////////
    	char *p_appName = "KeinDoppelstart";
    	DWORD dwError;

    	// Kennung erstellen
    	CreateMutex(NULL, true, p_appName);

    	// Fehlermeldung prüfen
    	dwError = GetLastError();

	if (ERROR_ALREADY_EXISTS == dwError)
	{
		// print message
		MessageBox("An instance already running! Application will be terminated.", "Title", MB_ICONERROR);

		// close application
		OnOK();
	}

	/////////////////////////////////////
	/// END -> prevent double start of app
	/////////////////////////////////////

	// start dialog
	CDialog::OnInitDialog();

	// Hinzufügen des Menübefehls "Info..." zum Systemmenü.

	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{	
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
	

	// read content of ini file
	ReadIniFile();
	
	/************************************************/
	/*	create the network sockets					*/
	/************************************************/
	// set parents for sockets
	TCPIPSocketConnect.SetParent( this );
	TCPIPSocketListen.SetParent( this );

	/////////////////////////////////////
	// establish handle for hotkeys (shortcuts)
	///////////////////////////////////// 
	m_hAccel = ::LoadAccelerators( AfxGetInstanceHandle(), MAKEINTRESOURCE( IDR_ACCELERATOR ) );
	
	
	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}
```


Danke für jede Hilfe! 


Gruß
kk3003


----------



## MCoder (11. Dezember 2007)

Hallo,

ich würde den Aufruf am Ende (vor return TRUE platzieren. Bei einer kleinen Test-App hat's bei mir eigentlich funktioniert.

Gruß
MCoder


----------



## kk3003 (11. Dezember 2007)

Hi,

nee, klappt net.... Ich probier' mal weiter... und poste dann die Lösung vll. 



Gruß


----------



## mvp87 (12. Dezember 2007)

Habs auch nochmal kurz getestet:

In der Funktion OnInitDialog 


```
this->ShowWindow(SW_MINIMIZE);
```

eingefügt und es funktioniert.

Nun stellt sich mir die Frage, ob du das Programm nur in die Taskleiste minimieren willst, oder direkt in den SysTray?


----------

