LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
PAINTSTRUCT ps;
HDC hdc;
char *szStr = "金玉";

switch (msg) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, szStr, strlen(szStr));
EndPaint(hWnd, &ps);
break;

上のコードで金玉という文字列が表示されると思うんですが、TextOut関数の第一引数hdcは
何も定義されずに使われているんですが・・・。
何も定義しないと0に初期化されて、デフォルトのディスプレイに出力される、という理解であってますか?