Morronic
Morronic

Reputation: 13

How to tell which parameters are required and which are not? (visual c++)

I am following an MSDN tutorial on Visual C++ on creating windows. It's using this code to register a window class.

// Register the window class.
const wchar_t CLASS_NAME[]  = L"Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc   = WindowProc;
wc.hInstance     = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

When I look up the WNDCLASS structure on MSDN: WNDCLASS Structure it gives this implementation:

typedef struct tagWNDCLASS {
  UINT      style;
  WNDPROC   lpfnWndProc;
  int       cbClsExtra;
  int       cbWndExtra;
  HINSTANCE hInstance;
  HICON     hIcon;
  HCURSOR   hCursor;
  HBRUSH    hbrBackground;
  LPCTSTR   lpszMenuName;
  LPCTSTR   lpszClassName;
} WNDCLASS, *PWNDCLASS;

How can you tell by the documentation that you only need these three parameters?

  1. lpfnWndProc
  2. hInstance
  3. lpszClassName

Upvotes: 1

Views: 296

Answers (1)

Vyacheslav Napadovsky
Vyacheslav Napadovsky

Reputation: 907

All parameters are required, but most of them can be set to default values.

WNDCLASS wc;
wc.style = CS_BYTEALIGNWINDOW | CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = DefWindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandle(NULL);
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = 0;
wc.lpszClassName = "MYCLASS";

Upvotes: 1

Related Questions