이전 예제와 거의 비슷하지만 구현 방식에 약간 차이가 있습니다.
비교하면서 차이점을 확인해 보세요.
//
// Visual Studio 2015, Hello world! API 예제 (2)
//
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wc.lpfnWndProc = (WNDPROC) WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("HelloGUI");
RegisterClass (&wc);
HWND hWnd = CreateWindow (TEXT("HelloGUI"), TEXT("HelloGUI Application"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
ShowWindow (hWnd, nCmdShow);
MSG msg;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return 0;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps);
GetClientRect (hWnd, &rc);
DrawText (hdc, TEXT("Hello, World! 안녕하세요."), -1,&rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
EndPaint (hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
'C' 카테고리의 다른 글
C/C++ 온라인 코딩 사이트 codepad.org (0) | 2016.08.11 |
---|---|
C 언어 이진 검색에서 2의 30승 이상의 원소일 때 mid 값 오버플로우 줄이기 (0) | 2016.08.02 |
Visual Studio 2015, Hello world! API 예제 (0) | 2016.07.19 |
C 라이브러리 레퍼런스 사이트 (0) | 2016.06.16 |
Visual C++, 다른 서버의 파일을 FTP로 다운로드 하기 (0) | 2016.04.16 |