das fenster wird nicht geschlossen.



  • 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!



  • die idee mit der messagebox ist mir auch schon gekommen.
    naja vieleicht interessiert es euch nicht aber ich schreib die problemlösung mal der vollständigkeit halber hier hin.

    LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
    switch(iMsg)
    {
    case WM_KILLFOCUS:
    DestroyWindow(hwnd);
    break;

    case WM_DESTROY:
    PostQuitMessage(0);
    break;

    default:
    return DefWindowProc(hwnd,iMsg,wParam,lParam);
    }
    return 0;
    }

    man beachte das killfocus.

    noch ne frage: um was genau handelt es sich bei einem accelerator?



  • Hmm, heisst das dann, das bei Windows CE nur der focus abgegeben wird, wenn man auf das X drückt?
    Nur ne kleine bemerkung, zu dem "return 0" kommt der Programmcode nie .. kannst du rausnehmen ;)!



  • ja der focus wird nur abgegeben wenn des "x" gedrückt wird.
    das hat eigentlich den vorteil, dass wenn z.b. ein anruf kommt und man deshalb ein prog schließen muß, man nicht speichern muß.
    das prog ist dann so etwas wie eingefroren bis es wieder aufgerufen wird.
    eigentlich ganz praktisch wenn man weiß warum und wieso des so ist.
    🙂

    na und? las mich doch meine return 's machen ich steh halt auf so etwas 😉



  • Wenn er mit break den/die/das switch verlässt, wird doch return 0 aufgerufen! Wieso sollte man es rausnehmen 😕


Anmelden zum Antworten