diff options
author | Kenneth Russel <[email protected]> | 2005-07-17 18:59:50 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2005-07-17 18:59:50 +0000 |
commit | 9ccfb4b547a75be721d9bbc2d760e51f170832cd (patch) | |
tree | 826915fbdc242aebb1d8175577db79644cd291c3 /make/wgl-CustomCCode.c | |
parent | 7e7e225eaf4fddb31152ab204bf1776f26079d40 (diff) |
Rewrote and refactored creation of dummy window and OpenGL context on
Windows to be encapsulated in WindowsDummyGLDrawable class. This is a
prerequisite for implementing top-level pbuffer support in the
GLDrawableFactory (i.e., not associated with a GLCanvas). Refactored
context implementations further on all platforms.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JSR-231@325 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'make/wgl-CustomCCode.c')
-rwxr-xr-x | make/wgl-CustomCCode.c | 77 |
1 files changed, 13 insertions, 64 deletions
diff --git a/make/wgl-CustomCCode.c b/make/wgl-CustomCCode.c index be233fd9a..0fe9ee628 100755 --- a/make/wgl-CustomCCode.c +++ b/make/wgl-CustomCCode.c @@ -1,37 +1,25 @@ #include <stdio.h> -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); +#define JOGL_DUMMY_WINDOW_NAME "__jogl_dummy_window" + +LRESULT CALLBACK DummyWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + return DefWindowProc(hWnd,uMsg,wParam,lParam); +} + ATOM oglClass = 0; HWND CreateDummyWindow( int x, int y, int width, int height ) { - RECT rect; HINSTANCE hInstance; DWORD dwExStyle; DWORD dwStyle; HWND hWnd; - ZeroMemory( &rect, sizeof( rect ) ); - // I don't know if we need this but it can't hurt - if( width < 0 ) { - rect.left = x + width; - rect.right = x; - } else { - rect.left = x; - rect.right = x + width; - } - if( height < 0 ) { - rect.top = y + height; - rect.bottom = y; - } else { - rect.top = y; - rect.bottom = y + height; - } + hInstance = GetModuleHandle(NULL); - if( !oglClass ) { WNDCLASS wc; ZeroMemory( &wc, sizeof( wc ) ); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; - wc.lpfnWndProc = (WNDPROC) WndProc; + wc.lpfnWndProc = (WNDPROC) DummyWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; @@ -39,7 +27,7 @@ HWND CreateDummyWindow( int x, int y, int width, int height ) { wc.hCursor = NULL; wc.hbrBackground = NULL; wc.lpszMenuName = NULL; - wc.lpszClassName = "OpenGL"; + wc.lpszClassName = JOGL_DUMMY_WINDOW_NAME; if( !(oglClass = RegisterClass( &wc )) ) { printf( "RegisterClass Failed: %d\n", GetLastError() ); return( 0 ); @@ -48,52 +36,13 @@ HWND CreateDummyWindow( int x, int y, int width, int height ) { dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; dwStyle = WS_OVERLAPPEDWINDOW; - if( !(hWnd=CreateWindowEx( dwExStyle, "OpenGL", "OpenGL", + if( !(hWnd=CreateWindowEx( dwExStyle, + JOGL_DUMMY_WINDOW_NAME, + JOGL_DUMMY_WINDOW_NAME, dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, + x, y, width, height, NULL, NULL, hInstance, NULL ) ) ) { return( 0 ); } return( hWnd ); } - -void NativeEventLoop() { - MSG msg; - BOOL ret; - // Grab windows system messages from queue - while( ( ret = GetMessage( &msg, NULL, 0, 0 ) ) != 0 ) { - if( ret == -1 ) { - printf( "Error GetMessage: %d", GetLastError() ); - } else { - DispatchMessage( &msg ); - } - } -} - -void DestroyDummyWindow(HWND handle, HDC hdc) { - // Post a close window message from shutdown hook thread to - // window message pump thread - if( !PostMessage( handle, WM_CLOSE, 0, (LPARAM) hdc ) ) { - printf( "PostMessage Failed: %d\n", GetLastError() ); - } -} - -LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - switch( uMsg ) { - case WM_CLOSE: - // Destroy HDC - if( ReleaseDC( hWnd, (HDC) lParam ) != 1 ) { - printf( "Error Releasing DC: %d\n", GetLastError() ); - } - // Destroy HWND - if( DestroyWindow( hWnd ) == 0 ) { - printf( "Error Destroying Window: %d\n", GetLastError() ); - } - break; - case WM_DESTROY: - // Terminate Dummy Window - PostQuitMessage(0); - return(0); - } - return DefWindowProc(hWnd,uMsg,wParam,lParam); -} |