summaryrefslogtreecommitdiff
path: root/win/glwindow.cpp
diff options
context:
space:
mode:
authorleo2001-01-29 23:40:20 +0000
committerleo2001-01-29 23:40:20 +0000
commit284ee630366231f6a0c893c9b3d3ce1d62b925d6 (patch)
tree73474cfa4884260b75d942c9e3847c4663dbde28 /win/glwindow.cpp
parent07636fc79aa7bcc76746e742925593ff085f076e (diff)
Minifig Wizard fixes
git-svn-id: http://svn.leocad.org/trunk@235 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'win/glwindow.cpp')
-rw-r--r--win/glwindow.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/win/glwindow.cpp b/win/glwindow.cpp
index 91103ec..6ddf1df 100644
--- a/win/glwindow.cpp
+++ b/win/glwindow.cpp
@@ -81,11 +81,50 @@ BOOL GLWindowPreTranslateMessage (GLWindow *wnd, MSG *pMsg)
return FALSE;
}
+LRESULT CALLBACK GLWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ static CMapPtrToPtr WindowMap;
+ GLWindow *wnd;
+
+ if (uMsg == WM_CREATE)
+ {
+ LPCREATESTRUCT cs = (LPCREATESTRUCT)lParam;
+
+ wnd = (GLWindow*)cs->lpCreateParams;
+ wnd->Create (hwnd);
+ wnd->IncRef ();
+
+ WindowMap.SetAt (hwnd, wnd);
+ }
+
+ wnd = (GLWindow*)WindowMap[hwnd];
+
+ if (wnd)
+ {
+ MSG msg;
+ msg.hwnd = hwnd;
+ msg.message = uMsg;
+ msg.wParam = wParam;
+ msg.lParam = lParam;
+
+ GLWindowPreTranslateMessage (wnd, &msg);
+
+ if (uMsg == WM_DESTROY)
+ {
+ WindowMap.RemoveKey (hwnd);
+ wnd->DecRef ();
+ }
+ }
+
+ return DefWindowProc (hwnd, uMsg, wParam, lParam);
+}
+
// ============================================================================
// GLWindow class
GLWindow::GLWindow (GLWindow *share)
{
+ m_nRef = 0;
m_pShare = share;
m_pData = (GLWindowPrivate*) malloc (sizeof (GLWindowPrivate));
memset (m_pData, 0, sizeof (GLWindowPrivate));