Advertisement

Dialog window without MFC

Started by September 25, 2000 02:23 PM
9 comments, last by SteveBrown 24 years, 3 months ago
TOTWGPG (Trick of the Windows Game Programming Gurus) by Andre LaMonthe comes highly recommended:

    // DEMO2_5.CPP - Creates two windows based on the same // window class// INCLUDES ///////////////////////////////////////////////#define WIN32_LEAN_AND_MEAN  // just say no to MFC#include <windows.h>   // include all the windows headers#include <windowsx.h>  // include useful macros#include <stdio.h>     #include <math.h>// DEFINES ////////////////////////////////////////////////// defines for windows #define WINDOW_CLASS_NAME "WINCLASS1"// GLOBALS ////////////////////////////////////////////////// FUNCTIONS //////////////////////////////////////////////LRESULT CALLBACK WindowProc(HWND hwnd, 						    UINT msg,                             WPARAM wparam,                             LPARAM lparam){// this is the main message handler of the systemPAINTSTRUCT		ps;		// used in WM_PAINTHDC				hdc;	// handle to a device context// what is the message switch(msg)	{		case WM_CREATE:         {		// do initialization stuff here        // return success		return(0);		} break;	case WM_PAINT: 		{		// simply validate the window		hdc = BeginPaint(hwnd,&ps);	 		// you would do all your painting here        EndPaint(hwnd,&ps);        // return success		return(0);   		} break;	case WM_DESTROY: 		{		// kill the application, this sends a WM_QUIT message 		PostQuitMessage(0);        // return success		return(0);		} break;	default:break;    } // end switch// process any messages that we didn''t take care of return (DefWindowProc(hwnd, msg, wparam, lparam));} // end WinProc// WINMAIN ////////////////////////////////////////////////int WINAPI WinMain(	HINSTANCE hinstance,					HINSTANCE hprevinstance,					LPSTR lpcmdline,					int ncmdshow){WNDCLASSEX winclass; // this will hold the class we createHWND	   hwnd;	 // generic window handleMSG		   msg;		 // generic message// first fill in the window class stucturewinclass.cbSize         = sizeof(WNDCLASSEX);winclass.style			= CS_DBLCLKS | CS_OWNDC |                           CS_HREDRAW | CS_VREDRAW;winclass.lpfnWndProc	= WindowProc;winclass.cbClsExtra		= 0;winclass.cbWndExtra		= 0;winclass.hInstance		= hinstance;winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);winclass.hCursor		= LoadCursor(NULL, IDC_ARROW);winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);winclass.lpszMenuName	= NULL;winclass.lpszClassName	= WINDOW_CLASS_NAME;winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);// register the window classif (!RegisterClassEx(&winclass))	return(0);// create the first windowif (!(hwnd = CreateWindowEx(NULL,                  // extended style                            WINDOW_CLASS_NAME,     // class						    "Window 1 Based on WINCLASS1", // title						    WS_OVERLAPPEDWINDOW | WS_VISIBLE,					 	    0,0,	    // initial x,y						    400,400,  // initial width, height						    NULL,	    // handle to parent 						    NULL,	    // handle to menu						    hinstance,// instance of this application						    NULL)))	// extra creation parmsreturn(0);// create the second windowif (!(hwnd = CreateWindowEx(NULL,                  // extended style                            WINDOW_CLASS_NAME,     // class						    "Window 2 Also Based on WINCLASS1", // title						    WS_OVERLAPPEDWINDOW | WS_VISIBLE,					 	    100,100,  // initial x,y						    400,400,  // initial width, height						    NULL,	  // handle to parent 						    NULL,	  // handle to menu						    hinstance,// instance of this application						    NULL)))	// extra creation parmsreturn(0);// enter main event loop, but this time we use PeekMessage()// instead of GetMessage() to retrieve messageswhile(TRUE)	{    // test if there is a message in queue, if so get it	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))	   { 	   // test if this is a quit       if (msg.message == WM_QUIT)           break;		   // translate any accelerator keys	   TranslateMessage(&msg);	   // send the message to the window proc	   DispatchMessage(&msg);	   } // end if        // main game processing goes here		} // end while// return to Windows like thisreturn(msg.wParam);} // end WinMain///////////////////////////////////////////////////////////    
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara

This topic is closed to new replies.

Advertisement