관리 메뉴

Kim's Programming

WinAPI - 첫번째 시작 - 프로젝트 만들기 본문

Programming/Windows API

WinAPI - 첫번째 시작 - 프로젝트 만들기

Programmer. 2015. 8. 25. 17:51

C언어에서는 콘솔으로 만들었기 때문에 콘솔응용 프로그램을 선택하여 만들었지만 WinAPI는 프로젝트 생성이 조금 다릅니다. 전에는 위에 있는 win32 콘솔 응용 프로그램을 선택하여 만들었지만 WinApi는 win32 프로젝트를 용하여 프로젝트를 생성 해 주면됩니다. 나머지는 동일합니다.



WinApi 첫 예제의 소스입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<Windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("첫번째");
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
    HWND hWnd;
    MSG Message;
    WNDCLASS WndClass;
    g_hInst = hInstance;
    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    WndClass.hInstance = hInstance;
    WndClass.lpfnWndProc = WndProc;
    WndClass.lpszClassName = lpszClass;
    WndClass.lpszMenuName = NULL;
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&WndClass);
 
    hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);
 
    while (GetMessage(&Message, NULL, 00))
    {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
    }
    return (int)Message.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
    switch (iMessage)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
        break;
    }
    return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
cs

다음 소스를 컴파일 하게되면 다음과 같은 결과가 나옵니다.



하얀색 글배경과 구분이 안되어서 검은색 테두리 붙여 보았습니다. 우선 윈도우 하나를 만든것인데 간단한 윈도우지만 온전한 하나의 윈도우이므로 표준 윈도우가 가진 모든 기능을 다 발휘할 수 있습니다. 타이틀 바를 드래그하면 윈도우의 위치가 옮겨지고 경계선을 드래그 하면 크기가 변경되며 시스템 메뉴의 키보드 지원까지 완벽하게 작성되어 있습니다. 프로그램을 종료하면 다시 개발 환경으로 돌아옵니다. 다음 포스팅에서는 분석을 해보겠습니다.

'Programming > Windows API' 카테고리의 다른 글

WinApi - 출력(2/2)  (0) 2015.08.29
WinApi - 출력(1/2)  (0) 2015.08.27
WinApi - 분석(2/2)  (0) 2015.08.26
WinApi - 분석(1/2)  (1) 2015.08.26
WinAPI - 시작하기전에 알고 갑시다.  (0) 2015.08.24