| @@ -39,6 +39,8 @@ | |||||
| const int LOCAL_CLOSE_MSG = WM_USER + 50; | const int LOCAL_CLOSE_MSG = WM_USER + 50; | ||||
| HINSTANCE hInstance = NULL; | |||||
| struct PuglInternalsImpl { | struct PuglInternalsImpl { | ||||
| HWND hwnd; | HWND hwnd; | ||||
| HDC hdc; | HDC hdc; | ||||
| @@ -49,6 +51,15 @@ struct PuglInternalsImpl { | |||||
| LRESULT CALLBACK | LRESULT CALLBACK | ||||
| wndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); | wndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); | ||||
| extern "C" { | |||||
| BOOL WINAPI | |||||
| DllMain(HINSTANCE hInst, DWORD, LPVOID) | |||||
| { | |||||
| hInstance = hInst; | |||||
| return 1; | |||||
| } | |||||
| } // extern "C" | |||||
| PuglView* | PuglView* | ||||
| puglCreate(PuglNativeWindow parent, | puglCreate(PuglNativeWindow parent, | ||||
| const char* title, | const char* title, | ||||
| @@ -77,9 +88,9 @@ puglCreate(PuglNativeWindow parent, | |||||
| impl->wc.lpfnWndProc = wndProc; | impl->wc.lpfnWndProc = wndProc; | ||||
| impl->wc.cbClsExtra = 0; | impl->wc.cbClsExtra = 0; | ||||
| impl->wc.cbWndExtra = 0; | impl->wc.cbWndExtra = 0; | ||||
| impl->wc.hInstance = 0; | |||||
| impl->wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); | |||||
| impl->wc.hCursor = LoadCursor(NULL, IDC_ARROW); | |||||
| impl->wc.hInstance = hInstance; | |||||
| impl->wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION); | |||||
| impl->wc.hCursor = LoadCursor(hInstance, IDC_ARROW); | |||||
| impl->wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); | impl->wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); | ||||
| impl->wc.lpszMenuName = NULL; | impl->wc.lpszMenuName = NULL; | ||||
| impl->wc.lpszClassName = classNameBuf; | impl->wc.lpszClassName = classNameBuf; | ||||
| @@ -98,8 +109,8 @@ puglCreate(PuglNativeWindow parent, | |||||
| WS_EX_TOPMOST, | WS_EX_TOPMOST, | ||||
| classNameBuf, title, | classNameBuf, title, | ||||
| (visible ? WS_VISIBLE : 0) | (parent ? WS_CHILD : winFlags), | (visible ? WS_VISIBLE : 0) | (parent ? WS_CHILD : winFlags), | ||||
| 0, 0, wr.right-wr.left, wr.bottom-wr.top, | |||||
| (HWND)parent, NULL, NULL, NULL); | |||||
| CW_USEDEFAULT, CW_USEDEFAULT, wr.right-wr.left, wr.bottom-wr.top, | |||||
| (HWND)parent, NULL, hInstance, NULL); | |||||
| if (!impl->hwnd) { | if (!impl->hwnd) { | ||||
| free(impl); | free(impl); | ||||
| @@ -221,7 +232,7 @@ processMouseEvent(PuglView* view, int button, bool press, LPARAM lParam) | |||||
| } else { | } else { | ||||
| ReleaseCapture(); | ReleaseCapture(); | ||||
| } | } | ||||
| if (view->mouseFunc) { | if (view->mouseFunc) { | ||||
| view->mouseFunc(view, button, press, | view->mouseFunc(view, button, press, | ||||
| GET_X_LPARAM(lParam), | GET_X_LPARAM(lParam), | ||||
| @@ -251,7 +262,7 @@ handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam) | |||||
| case WM_CREATE: | case WM_CREATE: | ||||
| case WM_SHOWWINDOW: | case WM_SHOWWINDOW: | ||||
| case WM_SIZE: | case WM_SIZE: | ||||
| RECT rect; | |||||
| RECT rect; | |||||
| GetClientRect(view->impl->hwnd, &rect); | GetClientRect(view->impl->hwnd, &rect); | ||||
| puglReshape(view, rect.right, rect.bottom); | puglReshape(view, rect.right, rect.bottom); | ||||
| view->width = rect.right; | view->width = rect.right; | ||||