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.
-
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