das fenster wird nicht geschlossen.



  • achso.

    und wie soll das programm nun beendet werden? setz doch noch den fensterstyle WS_OVERLAPPEDWINDOW damit das fenster auch die buttons in der titelleiste hat (x).



  • In WM_PAINT sollte NIE nur return 0; stehen! Entweder gar nicht abfangen oder BeginPaint & EndPaint darin aufrufen.
    Wenn überhaupt, wird DestroyWindow in WM_CLOSE aufgerufen (kannst du aber auch weglassen) und in WM_DESTROY wird nur PostQuitMessage aufgerufen (KEIN DestroyWindow) (und halt am Ende return 0;)



  • Original erstellt von <noname01>:
    ich glaube, das das "X" oben rechts das fenster zwar schließt aber weder eine WM_close noch eine WM_QUIT message sendet.

    it's not a bug, it's a feature 😃

    wenn ich mich so ein halbes jahr zurück erinnere, da hab ich auch mal ein paar progs für pocket pcs geschrieben...hatte genau den gleichen effekt. die anwendung bleibt im hintergrund aktiv wenn man sie über dieses 'X' das man ja nicht selbst gemacht hat schliesst. bei mir war das kein problem, weil ich eh nen soft reset gemacht hab...
    *grübel*
    man hat doch eh diesen anwendungsmanager oder so... 😕

    ich weis leider auch nicht mehr so...kann auch nix testen...



  • Hmm, vielleicht setzt du nen Punkt wo du hinklickst der dann PostQuitMessage(0) aufruft?! .. oder wenn eine bestimmte Taste oder Zeichenkette eingegeben wird?!

    <- nur Vorschläge .. weiss nicht inwieweit man sowas auf Win-CE realisieren kann (ich weiss noch nicht mal was Win-CE ist aber egal ;))!

    Mfg 🙂



  • naja windows-ce ist das betriebssystem für die PDA (das sind diese kleinen taschencomputer mit touchdisplay und nem stift).

    gut zu wissen ist erstmal,
    das es sich um keinen bug von meiner seite her handelt.

    schlecht ist allerdings,
    das ich immer noch nicht die message abfangen kann die dieses "X" sendet wenn es gedrückt wird.

    denn dann könnte man ja an der stelle einhaken und PostQuitMessage senden.

    nein es sollte schon über dieses "X" geschlossen werden oder jemand verät mir wie ich eine fullschreen-anwendung für win-ce zaubere.

    und nein overlappedwindow ist nicht win-ce kompatibel



  • ist das mit dem 'X' nicht bei allen anwendungen so gewesen? wo ist denn das problem, dass du sie unbedingt schliessen willst wenn mann das 'X' drückt... 😕



  • wie soll es sonst meinem anwender möglich sein das prog zu beenden?
    weiterhin ...
    was passiert wenn der anwender ausversehen mal auf des "X" drückt?
    das fenster verschwindet auf nimmer wiedersehen und die anwendung läuft trotzdem weiter. (irgendwo etwas bescheiden oder ? 🙂 )



  • ich hab immer ne toolbar mit nem exit und dann DestroyWindow(hWnd); gemacht.
    und beim programm aufruf

    CreateMutex (NULL, true, TEXT("bla"));
    if (GetLastError() == ERROR_ALREADY_EXISTS){
            HWND tHwnd;
            tHwnd = FindWindow(NULL, TEXT("bla"));
            SetForegroundWindow(tHwnd);
            return 0;
    }
    

    hat für meine zwecke gereicht und wie gesagt der 'anwendungsmanager' 🙂



  • das kann ja wohl kein bug von windows ce sein. das hätte microsoft sicherlich selbst bemerkt. passiert das bei anderen anwendungen (die nicht von dir sind) auch?



  • nun gut so geht es auch aber ich wollte es eigentlich so richtig elegant wie die anderen programme machen.

    ja andere programme schließen sich vollständig wenn ich des "X" drücke.



  • sorry da kann ich dir mit meinen drei wochen ce in der vergangenheit nicht weiterhelfen...tät mich jetzt aber wirklich auch interessieren wie man das 'X' dazu bringt nicht nur zu minimieren 😕 😞



  • kriegt man da kein WM_CLOSE ?



  • *nachgeschaut* also bei mir wars im code und ich meine es ging nicht, aber wie gesagt...kein pda daheim und keine erfahrung mit win ce 😃



  • nein mit WM_CLOSE gings net



  • Also entweder hast Du irgendwo einen Thread implementiert, von dem Du uns nix erzählt hast, oder Du solltest mal folgende Messageloop versuchen:

    while( (status=GetMessage( &msg, NULL, 0, 0)) != 0)
    {
       if( status == -1)
          return -1;
       if( !TranslateAccelerator( msg.hwnd, hAccelTable, &msg))
       {
          TranslateMessage( &msg);
          DispatchMessage( &msg);
       }
    }
    


  • was bedeutet das ausrufe zeichen vor der funtion???



  • Original erstellt von <neuer>:
    was bedeutet das ausrufe zeichen vor der funtion???

    Negation. Das weiß ja sogar ich als eingefleischter Delphi-Programmierer. :o



  • wenn jemandem von euch durch zufall einfallen sollte was des windows-ce für ne nachricht sendet wenn man auf den schließenschalter drückt oder wenn einer von euch wissen sollte wie man nen vollbildmodus bei win-ce erzeugt sagt er mir bitte bescheid.

    p.s. ich dachte immer TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;
    würden auch so funtzen?

    (hat es bei mir bis jetzt eigentlich



  • Vielleicht hilft dir die MSG abzufangen, wenn du auf X drückst und dann durch MessageBox oder so auszugeben!? Kriegst zwar ne Zahl aber in irgendeiner Datei steht zu welchem WM_xxx die Zahl gehört!



  • p.s. ich dachte immer TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;

    Aber nicht, wenn man Accelerator-Tasten verwendet, kam wohl bei Dir noch net vor!


Anmelden zum Antworten