Problem mit h_Wnd und Fenstergröße



  • Hallo,
    wie man anhand des Themas schon erkennen kann, habe ich ein Problem mit h_Wnd.
    Undzwar soll eine Website beim Clicken eines Buttons im Standard-Browser geöffnet werden.
    Hab mich darüber mal etwas schlau gemacht und auch einige nützliche sachen finden können.
    Der Code des kritischen Bereichs sieht so aus:

    private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
    
    	LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    	HINSTANCE ShellExecute(HWND hwnd,
        LPCTSTR lpOperation,
        LPCTSTR lpFile,
        LPCTSTR lpParameters,
        LPCTSTR lpDirectory,
        INT nShowCmd
    );
    
    ShellExecute (HWND = hwnd, _T("open"), _T("http://www.microsoft.com"), 0, 0, SW_SHOWNORMAL);
    		 }
    

    Wahrscheinlich nicht grade die eleganteste Art und Weise, aber habe so das beste Ergebnis erzielen können.

    Bekomme folgende Fehlermeldung:
    error C2065: 'hwnd': nichtdeklarierter Bezeichner

    hwnd durch 0 oder NULL zu ersetzen war erfolglos (im Netzt hatte das allerdings bei einigen geklappt)

    hat jemand von Euch vielleicht eine Idee?

    Mein anderes Problem ist, dass wenn ich das Programm (die älere version) an einen Computer mit anderen Bildschirmeinstellungen (1080 x 1920px) starte, das Fenster zu klein ist, und man so einige Buttons nicht mehr clicken kann und einige Labels nicht mehr zu sehen sind.

    Schonmal Danke im Voraus.

    LG



  • Wenn du schon C++/CLI programmierst rate ich dir auch zuerst die .NET Lösungen anzugucken. In deinem Fall wäre das System::Diagnostics::Process::Start(..) (oder die Klass Process überhaupt).



  • Danke schonmal. könntest Du die Antwort vielleicht noch ein wenig prärisieren? Habe mich auch noch etwas über die ganze whnd sache infortiert, und bin noch auf CWnd gestoßen. Muss ich das auchnoch verwenden?





  • 0xDEADC0DE schrieb:

    Danke schonmal. könntest Du die Antwort vielleicht noch ein wenig prärisieren? Habe mich auch noch etwas über die ganze whnd sache infortiert, und bin noch auf CWnd gestoßen. Muss ich das auchnoch verwenden?

    CWnd ist MFC, ganz anderes Thema... hör auf theta. 🙂



  • war leider erfolglos. bekomme sonst immer eine Fehlermeldung, die sagt:

    error C2664: 'ShellExecuteW': Konvertierung des Parameters 1 von 'System::IntPtr' in 'HWND' nicht möglich

    trotzdem danke



  • Wie gesagt - benutze Process.Start(..) anstelle von ShellExecute(..).



  • Achsoo, entschuldigung. habe da was missverstanden.
    Habe es nun abgeändert. Ist das so richtig?

    private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
    
    Process::Start(Handle, ("open"), ("http://www.Meine-Hompage.de/cpp"), NULL,NULL,SW_SHOWDEFAULT); 
    		 }
    

    nun muss ich noch zusätzlich
    System::Diagnostics::Process::Start()
    irgendso unterbringen? wenn ja, wo denn?



  • Achsoo, entschuldigung. habe da was missverstanden.

    Jop - hab ich gemerkt.

    Habe es nun abgeändert. Ist das so richtig?

    Nein.

    Ich schlage vor Du guckst Dir die Doku zu System::Diagnostics::Process::Start(..) an - dort sind auch Bsp. und auch im restlichen Internet gibts viele Bsp.



  • Bin mit Process.Start() nicht weitergekommen.
    Ich glaube ich habe nun eine mehr oder weniger richtige Lösung gefunden:

    private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
    
    			 using namespace std;
    		public: bool Start (Handle, ("open"), ("http://www.Meine-Hompage.de/cpp"), NULL,NULL,SW_SHOWDEFAULT);
    		 }
    

    nun bekomme ich aber folgende Fehlermeldung:
    error C2143: Syntaxfehler: Es fehlt ';' vor 'public'

    habe sämtliches ausprobiert aber immer die selbe Fehlermeldung erhalten.



  • Da ist auch ziemlich alles falsch - lern doch zuerst wie man Methoden (statische und Member) aufruft. Danach ist dein Problem ein Klacks.


Anmelden zum Antworten