X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=progs%2Fdemos%2FResizer%2FResizer.cpp;h=28350228ce10f77cb7b9f2a93fb45f400d03d880;hb=4a451851ec51ea7c3b79534fa5faebadceedf4df;hp=41d88722b0dbf987051e1238e4051102204412c3;hpb=904f551774d232dbad1d657a305449ec359c9f57;p=freeglut diff --git a/progs/demos/Resizer/Resizer.cpp b/progs/demos/Resizer/Resizer.cpp index 41d8872..2835022 100644 --- a/progs/demos/Resizer/Resizer.cpp +++ b/progs/demos/Resizer/Resizer.cpp @@ -14,6 +14,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ); void Redisplay(); void Reshape(int width, int height); void Position(int x, int y); +void WindowStatus(int state); @@ -31,6 +32,12 @@ void DrawQuad() glEnd(); } +void UnhideTimer(int window) +{ + glutSetWindow(window); + glutShowWindow(); +} + void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) { switch (cChar) @@ -119,6 +126,7 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) glutDisplayFunc( Redisplay ); glutReshapeFunc( Reshape ); glutPositionFunc( Position ); + glutWindowStatusFunc( WindowStatus ); } else { @@ -133,6 +141,26 @@ void SampleKeyboard( unsigned char cChar, int nMouseX, int nMouseY ) break; + case 'i': + case 'I': + glutIconifyWindow(); + break; + + + case 'h': + case 'H': + if (nChildWindow!=-1 && cChar=='h') /* Capital H always hides the main window*/ + { + glutSetWindow(nChildWindow); + glutTimerFunc(2000, UnhideTimer, nChildWindow); + } + else + { + glutSetWindow(nWindow); + glutTimerFunc(2000, UnhideTimer, nWindow); + } + glutHideWindow(); + default: break; } @@ -168,10 +196,16 @@ void Position(int x, int y) { int win = glutGetWindow(); - printf("position, %s: %dx%d\n",win==nWindow?"top-left of main":"top-left of child relative to parent", + printf("position, %s: (%d,%d)\n",win==nWindow?"top-left of main":"top-left of child relative to parent", x, y); } +void WindowStatus(int state) +{ + int win = glutGetWindow(); + printf("windowstatus (win %i): %i\n",win,state); +} + void Redisplay(void) { int win = glutGetWindow(); @@ -228,8 +262,8 @@ void Timer(int unused) nWidth, nHeight, nPosX ,nPosY); - /* (re)set the timer callback and ask glut to call it in 1 second */ - glutTimerFunc(300, Timer, 0); + /* (re)set the timer callback and ask glut to call it in 500 ms */ + glutTimerFunc(500, Timer, 0); } @@ -259,6 +293,7 @@ int main(int argc, char* argv[]) glutDisplayFunc( Redisplay ); glutReshapeFunc( Reshape ); glutPositionFunc( Position ); + glutWindowStatusFunc( WindowStatus ); glutTimerFunc(300, Timer, 0);