I recently prepared a window creating header file for Win32 programming. I want to share it with you guys.
Code:
 class CCommon
   {
   	public:
   	DWORD	dwExStyle;
   	char	lpClassName[MAX_LOADSTRING];
   	char	lpWindowName[MAX_LOADSTRING];
   	DWORD	dwStyle;
   	int		x;
   	int		y;
   	int		nWidth;
   	int		nHeight;
   	HWND	hWndParent;
   	HMENU	hMenu;
   	HINSTANCE hProgInst;
   	LPVOID	lpParam;
   	HWND	hWnd;
   	
   	HANDLE hImage;
   	CHAR szImageFile[MAX_LOADSTRING];
   	
   	CCommon()
   	{
   		dwExStyle		= 0;
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "ClassName");
   		StringCbCopy(lpWindowName , MAX_LOADSTRING, "Caption");
   		dwStyle			= WS_VISIBLE | WS_CHILD;
   		x				= 5;
   		y				= 5;
   		nWidth			= 100;
   		nHeight			= 100;
   		hWndParent		= HWND_DESKTOP;
   		hMenu			= NULL;
   		lpParam			= NULL;
   	}
   
   	VOID SetInitials(INT x, INT y, INT nWidth, INT nHeight)
   	{
   		this->x = x;
   		this->y = y;
   		this->nWidth = nWidth;
   		this->nHeight = nHeight;
   	}
   	void Create(void)
   	{
   		hWnd = CreateWindowEx(	(DWORD)		dwExStyle,
   								(LPCTSTR)	lpClassName,
   								(LPCTSTR)	lpWindowName,
   								(DWORD)		dwStyle,
   								(int)		x,
   								(int)		y,
   								(int)		nWidth,
   								(int)		nHeight,
   								(HWND)		hWndParent,
   								(HMENU)		hMenu,
   								(HINSTANCE)	hProgInst,
   								(LPVOID)	lpParam);
   		DWORD ErrCode = GetLastError();
   		if (hWnd == NULL)
   		{
   			MessageBox(NULL, "Error creating control.", "Error", MB_OK);
   			DebugTest(ErrCode);
   		}
   	}
   	void Enable(bool State)
   	{
   		EnableWindow(hWnd, State);
   	}
   	char * GetText(unsigned long int MaxChars)
   	{
   		char * Buffer = new char[MaxChars];
   		SendMessage(hWnd, WM_GETTEXT, (WPARAM) MaxChars, (LPARAM) Buffer);
   		return Buffer;
   		delete Buffer;
   	}
   	void SetText(char * Buffer)
   	{
   		if(!SendMessage(hWnd, WM_SETTEXT, (WPARAM) NULL, (LPARAM) Buffer))
   		{
   			DWORD dwError = GetLastError();
   			DebugTest("Error setting text"); DebugTest(dwError);
   		}
   	}
   	void SetImage(void)
   	{
   		hImage = LoadImage(hInstance, szImageFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
   		SendMessage(hWnd, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hImage);
   	}
   };
   
   class CUserDefined : public CCommon
   {
   public:
   	WNDCLASSEX WindowClass;
   	
   	CUserDefined()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "ClassName");
   		
   		WindowClass.cbSize			= (UINT)	sizeof(WNDCLASSEX);		//Defaults for WNDCLASSEX
   		WindowClass.style			= (UINT)	CS_DBLCLKS;
   		//WindowClass.lpfnWndProc		= (WNDPROC)	WindowProcedure;
   		WindowClass.cbClsExtra		= (INT)		0;
   		WindowClass.cbWndExtra		= (INT)		0;
   		//WindowClass.hInstance		= (HINSTANCE)	hProgInst;
   		WindowClass.hIcon			= (HICON)	LoadIcon (NULL, IDI_APPLICATION);
   		WindowClass.hCursor			= (HCURSOR)	LoadCursor (NULL, IDC_ARROW);
   		WindowClass.hbrBackground	= (HBRUSH)	COLOR_BACKGROUND;
   		WindowClass.lpszMenuName	= (LPCTSTR)	NULL;
   		WindowClass.lpszClassName	= (LPCTSTR)	lpClassName;
   		WindowClass.hIconSm			= (HICON)	LoadIcon (NULL, IDI_APPLICATION);
   	}
   	void RegisterAndCreate(void)
   	{
   		if (!RegisterClassEx(&WindowClass)) MessageBox(NULL, "Error registering.", "Error", MB_OK);
   		Create();
   	}
   	void Enable(bool State)
   	{
   		EnableWindow(hWnd, State);
   	}
   };
   class CEdit : public CCommon
   {
   	public:
   	
   	CEdit()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "EDIT");
   	}
   };
   
   class CStatic : public CCommon
   {
   	public:
   	
   	CStatic()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "STATIC");
   	}
   };
   
   class CImage : public CCommon
   {
   	public:
   	//HANDLE hImage;
   	//CHAR szImageFile[MAX_LOADSTRING];
   	
   	CImage()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "STATIC");
   		dwStyle |= SS_BITMAP;
   	}
   	//VOID SetImage(CHAR * szFileName)
   	//{
   	//	hImage = LoadImage(hInstance, szFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
   	//	SendMessage(this->hWnd, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hImage);
   	//}
   	//VOID SetImage(VOID)
   	//{
   	//	hImage = LoadImage(hInstance, szImageFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
   	//	SendMessage(hWnd, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) hImage);
   	//}
   };
   class CButton : public CCommon
   {
   	public:
   	
   	CButton()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "BUTTON");
   	}
   };
   
   class CFrame : public CCommon
   {
   	public:
   	
   	CFrame()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "BUTTON");
   		dwStyle |= BS_GROUPBOX;
   	}
   };
   class CCheckBox : public CCommon
   {
   public:
   	
   	CCheckBox()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "BUTTON");
   	}
   };
   
   class CRadioButton : public CCommon
   {
   	public:
   	
   	CRadioButton()
   	{
   		StringCbCopy(lpClassName , MAX_LOADSTRING, "BUTTON");
   		dwStyle |= BS_AUTORADIOBUTTON;
   	}
   };
   
   class CMessageLoop
   {
   	public:
   	MSG	Message;
   	HWND hWnd;
   	UINT wMsgFilterMin;
   	UINT wMsgFilterMax;
   	BOOL bReturnValue;
   	BOOL bContinue;
   	DWORD dwLastError;
   	
   	CMessageLoop()
   	{
   		hWnd = NULL;
   		bContinue = TRUE;
   		wMsgFilterMin = 0;
   		wMsgFilterMax = 0;
   		dwLastError = 0;
   	}
   	VOID Loop(VOID)
   	{
   		do
   		{
   			switch(bReturnValue = GetMessage(&Message, NULL, wMsgFilterMin, wMsgFilterMax))
   			{
   				case 0:
   					bContinue = FALSE;
   					break;
   				case -1:
   					dwLastError = GetLastError();	//For future use
   					if(IDNO == MessageBox(NULL, "Error occured in the message loop.\nDo you want to continue?", "Message Loop", MB_YESNO | MB_ICONERROR))
   						bContinue = FALSE;
   					break;
   				default:
   					TranslateMessage(&Message);
   					DispatchMessage(&Message);
   			}
   		} while (bContinue);
   	}
   };
Here is an example :
Code:
 CUserDefined MainWnd;
   MainWnd.SetInitials(100, 100, 800, 480);
   MainWnd.hProgInst = hInstance;
   MainWnd.WindowClass.hInstance = hInstance;
   StringCbCopy(MainWnd.lpWindowName, MAX_LOADSTRING, "Window Title");
   MainWnd.WindowClass.lpfnWndProc = (WNDPROC) WindowProcedure;MainWnd.RegisterAndCreate();
To create a button on this window :
Code:
 CButton Button;
   Button.SetInitials(100, 100, 800, 480);
   Button.hWnd = MainWnd.hWnd;
   Button.Create();
I am still improving this header. There may be bugs and errors. If you ever happen to come across any problem, or have any suggestions please write under this topic.

Note : You don't have to copy/paste. I attached a zip file, just download it.
Attached Files
File Type: zip MyWindowClasses.zip (1.8 KB, 10 views)