MessageLoop der WinAPI mit wrappen



  • Hat wer eine Idee wie man ganz billig die Nachrichtenbehandlung mit den ganzen switch cases mit C++ etwas entwirren kann? Muss nix tolles sein wo auf alles geachtet wird. Ich will auch nicht Framework xyz nutzen sonder schon mit der reinen WinAPI und C++ arbeiten.

    Über ein paar Denkanstöße wäre ich sehr dankbar.



  • Es gibt eine Möglichkeit mit den Message-Macros von windowsx.h.
    schau mal hier nach:
    [url]
    http://support.microsoft.com/kb/83456/de
    [/url]



  • Danke für den Hinweis, aber ich dachte da schon mehr an C++ in Richtung MessageKlasse oder ähnliches.


  • Mod

    Schau Dir WTL oder ATL an...
    Oder bei Paul DiLascia fndet sich ach ein Ansatz in "Windows ++: Writing Reusable Windows Code in C++"



  • Jo,..

    das geht mit trick 17:

    typedef struct _window
    {
    virtual void create(void);
    virtual void paint(void);
    virtual void close(void);
    }WINDOW,*LPWINDOW;
    
    LRESULT CALLBACK Proc(HWND hWnd, UINT msg, 
                                      WPARAM wParam, 
                                        LPARAM lParam)
    LPWINDOW _wnd;
    
    		if(msg == WM_CREATE)
    		{
    			_wnd = (LPWINDOW) ((LPCREATESTRUCT)lParam)->lpCreateParams;
    			SetWindowLongPtr(hWnd,GWL_USERDATA,(LONG_PTR)_wnd);
                            if(!_wnd) return DefWindowProc(hWnd,msg,wParam,lParam);
                           _wnd->create();
    		}
    		else
    		{
    			_wnd = (LPWINDOW)GetWindowLongPtr(hWnd,GWL_USERDATA);
    			if(!_wnd) return DefWindowProc(hWnd,msg,wParam,lParam);
    		}
    
    switch(msg)
    {
      WM_PAINT:  _wnd->paint(); break;
      WM_CLOSE:  _wnd->close(); break;
      ....
    

    Ich verwende es leider auch zu selten...

    grüüüße


Log in to reply