#include <Windows.h>



HWND g_hWnd;

HINSTANCE g_hInst;

BOOL bEllipse = TRUE;

LPCTSTR lpszClassName = TEXT("Wnd1");

LPCTSTR lpszChildName = TEXT("Wnd2");


LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);

LRESULT CALLBACK ChildProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);


INT APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)

{

g_hInst = hInstance;

HWND hWnd;

WNDCLASS WndClass;

WndClass.cbClsExtra = 0;

WndClass.cbWndExtra = 0;

WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);

WndClass.hIc IDI_APPLICATION);

WndClass.hInstance = hInstance;

WndClass.lpfnWndProc = WndProc;

WndClass.lpszClassName = lpszClassName;

WndClass.lpszMenuName = NULL;

WndClass.style = CS_HREDRAW | CS_VREDRAW;


RegisterClass(&WndClass);

hWnd = CreateWindow(lpszClassName, TEXT("FUCKER!"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);


WndClass.hCursor = LoadCursor(NULL, IDC_CROSS);

WndClass.lpfnWndProc = ChildProc;

WndClass.lpszClassName = TEXT("ChildCls");

RegisterClass(&WndClass);


ShowWindow(hWnd, nCmdShow);


MSG iMessage;

while (GetMessage(&iMessage, NULL, 0, 0))

{

TranslateMessage(&iMessage);

DispatchMessage(&iMessage);

}

return 0;

}


LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

switch (iMessage)

{

case WM_CREATE:

//MessageBox(hWnd, TEXT("FUCK"), NULL, NULL);

HWND hChild;

hChild = CreateWindow(TEXT("ChildCls"), TEXT("fuck") , WS_CHILD | WS_OVERLAPPEDWINDOW, 100, 100, 100, 100, hWnd, (HMENU)1000, g_hInst, NULL);

ShowWindow(hChild, SW_SHOW);

return 0;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hWnd, iMessage, wParam, lParam);

}


LRESULT CALLBACK ChildProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

switch (iMessage)

{

case WM_CREATE:

MessageBox(hWnd, TEXT("FUCK"), NULL, NULL);

return 0;

case WM_LBUTTONDOWN:

bEllipse = !bEllipse;

InvalidateRect(hWnd, NULL, TRUE);

return 0;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

if (bEllipse)

{

Ellipse(hdc, 10, 10, 90, 90);

}

else

{

MoveToEx(hdc, 10, 10, NULL); LineTo(hdc, 90, 90);

MoveToEx(hdc, 10, 90, NULL); LineTo(hdc, 90, 10);

}

EndPaint(hWnd, &ps);

return 0;

}

return DefWindowProc(hWnd, iMessage, wParam, lParam);

}



문제 발생 부분은 WndProc의 WM_CREATE 부분의 CreateWindow인데 

이거 하면 X나 O표시된 차일드윈도우가 메인윈도우 안에 떠야되는데 아무리해도 안됨 ㅠㅠ

차일드윈도우 핸들인 hChild는 자꾸 널값만 반환하는데 뭔 인수 문제인지 모르겠음 ㅠㅠㅠㅜㅜㅜ