Fenster bekommt keine Nachrichten???



  • Das Problem ist das PeekMessage () NIE true liefert sonder immer false. D.h. er geht immer in den else Zweig


  • Mod

    Dann würde ich sagen: Es ist eben keine Nachricht, da, weil kein Fenster sichtbar ist?
    WS_VISIBLE/ShowWindow?



  • while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
            Engine_Main();
    }
    

    Ja, genau, schreibe "WS_VISIBLE | WS_OVERLAPPEDWINDOW", nicht nur WS_OVERLAPPEDWINDOW.



  • JAAAA es klappt! Danke! Müssten aber nicht eig auch unsichtbare Fenster Nachrichten bekommen?



  • Ich habe wieder ein Problem: Ich will in der Init-Methode der GameEngine ein DirectX Device erstellen. Ich bekomme aber diese Fehlermeldung:

    GameEngine.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion ""public: void __thiscall GameEngine::Init(void)" (?Init@GameEngine@@QAEXXZ)".

    PS: Ich habe die d3d9.lib und d3dx9.lib beim Linker unter zusätzliche Abhängigkeiten eingetragen!


  • Mod

    TB_D schrieb:

    JAAAA es klappt! Danke! Müssten aber nicht eig auch unsichtbare Fenster Nachrichten bekommen?

    Sicher aber die Message Queue erhält ja nur Nachrichten vom User-Input, und den bekommt niunmal kein verstecktes Fenster.



  • Martin Richter schrieb:

    Sicher aber die Message Queue erhält ja nur Nachrichten vom User-Input, und den bekommt niunmal kein verstecktes Fenster.

    Wieso nicht? Ist Windows doch egal, ob ein Fenster versteckt ist oder nicht. Wenn ich ein gültiges Fenster habe, kann ich an dieses auch Nachrichten schicken. Wäre mir neu, wenn nicht.



  • Ja und außerdem ist die Nachricht WM_CREATE zum Beispiel ja nicht gerade vom User ausgelöst 😉 . Wenn einer von euch sich mit DirectX auskennt wäre es toll wenn er sich noch mal meine zweite Frage angucken kann. Die einzige Lösung die ich dazu immer gehört habe ist d3d9.lib einbinden ... das habe ich aber schon gemacht! PS: Ich weiß das die Frage wohl eigentlich in ein anderes Forum gehört, dachte mir aber wo wir gerade am diskutieren sind ...


  • Mod

    Ich weißt nicht was Du dait sagen willst.
    In die Message Queue kommt WM_CREATE nicht.
    WM_CREATE eben nicht über die Queue versendet sonder sofort in CreateWindow ausgelöst und ausgeliefert



  • Ahja wieder was dazu gelernt... aber was ist mit meiner zweiten Frage? Tut mir leid wenn ich damit nerve, aber ich weiß echt nicht mehr weiter 👎 ...



  • In Delphi soll es ein Orakel geben, das man alles fragen kann!


Anmelden zum Antworten