summaryrefslogtreecommitdiffstats
path: root/make/wgl-CustomCCode.c
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2005-07-17 18:59:50 +0000
committerKenneth Russel <[email protected]>2005-07-17 18:59:50 +0000
commit9ccfb4b547a75be721d9bbc2d760e51f170832cd (patch)
tree826915fbdc242aebb1d8175577db79644cd291c3 /make/wgl-CustomCCode.c
parent7e7e225eaf4fddb31152ab204bf1776f26079d40 (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-xmake/wgl-CustomCCode.c77
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);
-}