Visual C++ 6 MFC: Programm minimiert starten

kk3003

Grünschnabel
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
 
Hi,

funktioniert leider nicht. :(

Wo muss dieser Aufruf genau platziert werden?

Code:
/////////////////////////////////////////////////////////////////////////////
// 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
 
Zuletzt bearbeitet:
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
 
Habs auch nochmal kurz getestet:

In der Funktion OnInitDialog

Code:
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?
 
Zuletzt bearbeitet:
Zurück