I need a maximized main window in my program.

This seems to work but is it the correct or best way to do it?

The msdn library says that nCmdShow, passed into WinMain, should be used
when initially showing the window. Should that first call to ShowWindow
be left in WinMain, or moved to WndProc?

Code:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{	
	HWND hWnd;
	MSG Msg;
	WNDCLASS wc;
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra  = 0;
	wc.cbWndExtra	  = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL, IDC_CROSS);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName  = NULL;
	wc.lpszClassName = "Main";

	if(!RegisterClass(&wc))
		return 0;

	hWnd = CreateWindow("Main", "mandelscope", WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

	if(hWnd == NULL)
		return 0;

	ShowWindow(hWnd, nCmdShow);
	hDc = GetDC(hWnd);

	initialize(hWnd);
	
	while(GetMessage(&Msg, NULL, 0, 0) > 0)
	{	TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return 0;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{	
	switch(msg)
	{	case WM_CREATE:
			ShowWindow(hWnd, SW_MAXIMIZE);
			break;

	...
	...
	...
	}
}