From: Diederick Niehorster Date: Fri, 23 Nov 2012 08:21:24 +0000 (+0000) Subject: now providing new position of child relative to parent in the position X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=commitdiff_plain;h=45513505af6c7113e6d85d3ae0732d516d5f89c7;p=freeglut now providing new position of child relative to parent in the position callback also need to set position func for the child window in the resizer demo git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1480 7f0cb862-5218-0410-a997-914c9d46530a --- diff --git a/progs/demos/Resizer/Resizer.cpp b/progs/demos/Resizer/Resizer.cpp index c2ca76d..3caf38e 100644 --- a/progs/demos/Resizer/Resizer.cpp +++ b/progs/demos/Resizer/Resizer.cpp @@ -12,7 +12,8 @@ GLboolean bChildPosDone = GL_FALSE, bChildSizeDone = GL_FALSE; void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ); void Redisplay(); -void Reshape(int x, int y); +void Reshape(int width, int height); +void Position(int x, int y); @@ -117,6 +118,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) glutKeyboardFunc( SampleKeyboard ); glutDisplayFunc( Redisplay ); glutReshapeFunc( Reshape ); + glutPositionFunc( Position ); } else { diff --git a/src/mswin/fg_main_mswin.c b/src/mswin/fg_main_mswin.c index 981acad..3ecde1f 100644 --- a/src/mswin/fg_main_mswin.c +++ b/src/mswin/fg_main_mswin.c @@ -432,6 +432,18 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, SFG_Window* saved_window = fgStructure.CurrentWindow; RECT windowRect; GetWindowRect( window->Window.Handle, &windowRect ); + + if (window->Parent) + { + /* For child window, we should return relative to upper-left + * of parent's client area. + */ + POINT topleft = {windowRect.left,windowRect.top}; + + ScreenToClient(window->Parent->Window.Handle,&topleft); + windowRect.left = topleft.x; + windowRect.top = topleft.y; + } INVOKE_WCB( *window, Position, ( windowRect.left, windowRect.top ) ); fgSetWindow(saved_window);