Czy poniższy sposób tworzenia dwóch okienek na bazie jednej klasy jest poprawny od strony samego standardu?
Jeśli nie, to jak powinno się to zrobić?
#include "stdafx.h"
#include <windows.h>
TCHAR className[] = TEXT("nazwa klasy");
TCHAR appName[] = TEXT("nazwa programu");
TCHAR appName2[] = TEXT("nazwa programu drugiego");
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
MessageBox(hWnd, TEXT("WM_CREATE"), appName, MB_OK);
break;
case WM_DESTROY:
MessageBox(hWnd, TEXT("WM_DESTROY"), appName, MB_OK);
PostQuitMessage(0);
break;
case WM_CLOSE:
if(MessageBox(hWnd, TEXT("Zakończyć działanie aplikacji"), appName, MB_YESNO)==IDYES)
{
return DefWindowProc(hWnd, msg, wParam, lParam);
}
else return 0;
default: return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX wc;
wc.cbClsExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.hCursor = 0;
wc.hIcon = 0;
wc.hIconSm = 0;
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = className;
wc.lpszMenuName = 0;
wc.style = CS_HREDRAW | CS_VREDRAW;
if(!RegisterClassEx(&wc))
{
MessageBox(0, TEXT("Błąd funkcji RegisterClassEx"), appName, MB_OK);
return 1;
}
HWND h = CreateWindowEx(0, className, appName, WS_OVERLAPPEDWINDOW, 0, 0, 300, 200, 0, 0, hInstance, 0);
HWND h2 = CreateWindowEx(0, className, appName, WS_OVERLAPPEDWINDOW, 300, 200, 300, 200, 0, 0, hInstance, 0);,
if(!h)
{
MessageBox(0, TEXT("Błąd funkcji CreateWindowEx"), appName, MB_OK);
return 2;
}
if (!h2)
{
MessageBox(0, TEXT("Błąd funkcji CreateWindowEx 2"), appName2, MB_OK);
return 2;
}
ShowWindow(h, nShowCmd);
ShowWindow(h2, nShowCmd);
UpdateWindow(h);
UpdateWindow(h);
MSG msg;
while(GetMessage(&msg, 0, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(className, hInstance);
return msg.wParam;
}