ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • API 기초(2)
    C/C++ 2015. 3. 12. 22:04
    #include <Windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    HINSTANCE g_hInst;
    LPCTSTR IpszClass = TEXT("First");
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int nCmdShow)
    {
    	HWND hWnd;
    	WNDCLASS WndClass;
    	MSG Message;
    	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 = IpszClass;
    	WndClass.lpszMenuName = NULL;
    	WndClass.style = CS_HREDRAW | CS_VREDRAW;
    	RegisterClass(&WndClass);
    
    	hWnd = CreateWindow(IpszClass, IpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);
    	ShowWindow(hWnd, nCmdShow);
    
    	while (GetMessage(&Message, NULL, 0, 0)) {
    		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;
    	}
    	return (DefWindowProc(hWnd, iMessage, wParam, lParam));
    }


    이어서 소스분석을 계속한다.



    [윈도우 클래스]


    WinMain에서 WndClass가 눈에 많이 띄일것이다.


    해당 클래스는, 먼저 틀을 꾸며준후, CreateWindow를 호출해 창을 생성해야한다.


    WndClass는 windows.h안에 정의되어있다.





    클래스 멤버들이다.


    해당 멤버들이 각각 창을 꾸민다.


    각각의 멤버들이하는역할은 msdn에서 찾아볼수있다.



    [RegisterClass]


    RegisterClass함수의 인수로 WNDCLASS구조체의 번지를 전달한다.




    [윈도우 생성]


    윈도우 생성은 WndClass로 각각 초기화해준후에 CreateWindow함수를 호출시켜 창을 생성한다.

    HWND CreateWindow(...)


    msdn에서 해당 함수를 검색하면 인자에대한 설명들이 나온다. 참고하길 바란다.


    BOOL ShowWindow(hWnd, nCmdShow);


    nCmdShow인자에 매크로상수들은 검색해보길바란다.




    창이 만들어지기까지의 과정


    WndClass정의 -> RegisterClass함수로 WndClass구조체번지전달 -> CreateWindow함수로 윈도우생성 -> ShowWindow로 윈도우표시 -> 메시지루프(사용자로부터 메세지를처리)



    'C/C++' 카테고리의 다른 글

    [API]WM_PAINT  (0) 2015.03.12
    [API]TextOut  (0) 2015.03.12
    [API]WndProc  (0) 2015.03.12
    [API]Message Loop  (0) 2015.03.12
    API 기초  (0) 2015.03.12

    댓글

Designed by Tistory.