ShowWindow(Form1->Handle,SW_SHOWNORMAL);



  • Hi,

    Nachdem ich ein minimiertes Fenster mit

    ShowWindow(Form1->Handle,SW_SHOWNORMAL);
    

    sichtbar mache funktioniert das minimieren nicht mehr.

    wer kann mir da helfen ?

    bis denne


  • Administrator

    1. "Geht nicht" ist eine bisschen dürftige Fehlerbeschreibung.
    2. Das hat nichts mit Standard C++ zu tun, also falsches Forum. ShowWindow scheint WinAPI zu sein, Form1->Handle dagegen C++/CLI. Bei C++/CLI würde man dies aber wohl über Form::WindowState machen.
    3. Du solltest die Dokumentation zu ShowWindow zuerst lesen, bevor du die Funktion anwendest:
    http://msdn.microsoft.com/en-us/library/ms633548.aspx
    Dann würdest du zum Beispiel rausfinden, dass eigentlich SW_RESTORE der richtige Wert wäre.

    Grüssli



  • Das Problem besteht weiterhin.

    Mein Programm überprüft beim starten ob es schon gestartet wurde.

    Alles funktioniert wunderbar ABER sobald ich mein Programm minimiere
    und die exe erneut starte die wiederum überprüft ob das programm schon gestartet ist kann ich mein Programm nicht mehr minimieren.

    Code in der Project.cpp

    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    
            try
            {
                    const char* Pname = "Form1";
    
    		 //**************** mehrmals start verhindern *****************
    
    		HANDLE hMutex=OpenMutex(MUTEX_ALL_ACCESS, 0, Pname);
    		if(!hMutex)
    		{
    			hMutex=CreateMutex(0, 0, Pname);
    		}
    		else
    		{
    		            //ShowMessage("Das Programm läuft schon");
                           HWND hWnd=FindWindow(0, Pname);
                           SetForegroundWindow(hWnd);
                           ShowWindow(hWnd, SW_SHOW);
                          //ShowWindow(hWnd, SW_RESTORE);
    
                        //SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW);
                        // DWORD style = GetWindowLong(hWnd, GWL_STYLE);
                        // style ^= WS_VISIBLE;
                        // SetWindowLong(hWnd, GWL_STYLE, (LONG)style);
    
                          return 0;
    		}
    
                     Application->Initialize();
                     Application->CreateForm(__classid(TForm1), &Form1);
                     Application->Run();
    
                  //*********************************
    		ReleaseMutex(hMutex);
                  //****************************
            }
            catch (Exception &exception)
            {
                     Application->ShowException(&exception);
            }
            catch (...)
            {
                     try
                     {
                             throw Exception("");
                     }
                     catch (Exception &exception)
                     {
                             Application->ShowException(&exception);
                     }
            }
            return 0;
    }
    

    ich bekomms einfach nicht auf die Reihe,
    weil ich einfach zu BLÖDE bin.



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi,

    genau das Problem habe ich auch.

    Weiss den keiner wie man das Lösen kann?



  • Indem man nicht C++/CLI sondern C++ mit WinApi, MFC oder Qt nutzt



  • Ich denke das es so ist

    Hier der Code noch mal

    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR lpCmdLine, int)
    {
    
    //*********** Einfügen **********************
    
    	HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS,0,"CEditor");
    	if(!hMutex) {
    		hMutex = CreateMutex(0,0,"CEditor");
    	} else {
    		HWND hWnd = FindWindow(0,"CNC-Editor");
    		ShowWindow(hWnd, SW_MAXIMIZE);
    		SetForegroundWindow(hWnd);
    
    		AnsiString sPath;
    
    		if (AnsiPos('"', lpCmdLine) != 0) {
    			sPath = lpCmdLine;
    		} else {
    			AnsiString sPath1 = lpCmdLine;
    			AnsiString sPath2 = getcwd(lpCmdLine, MAX_PATH);
    			sPath = sPath2 +"\\"+ sPath1;
    		}
    
    		if(strlen(sPath.c_str()) != 0) {
    			COPYDATASTRUCT cds;
    			cds.dwData=NULL;
    			cds.cbData=strlen(sPath.c_str())+1;
    			cds.lpData=sPath.c_str();
    			SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds);
    		}
    
    	 return 0;
    	 }
    
    //********** Ende Einfügen ******************
    
    	Application->Initialize();
    	Application->Title = "CNC-Editor";
    		Application->CreateForm(__classid(TMainForm), &MainForm);
    		Application->CreateForm(__classid(TAboutBox), &AboutBox);
    		Application->Run();
    
    //*********** Einfügen **********************
    	ReleaseMutex(hMutex);
    //********** Ende Einfügen ******************
    
    	return 0;
    }
    

    Wen er dann die Daten bekommen hat kann man nicht mehr Minimieren 😞
    Erst dann wieder wen man Wiederherstellen gemacht hat


Anmelden zum Antworten