WindowProcedure의 함수는 GUI에서 작동되는 함수이다.


 기본적으로 While로 계속 작동 하도록 만들어 져있다.


 이것은 매세지를 받아서 처리하는 함수이다.



 이걸 연결하는 방법으로 Windows Class에 설정이 되게 된다.


    /* The Window structure */

    wincl.hInstance = hThisInstance;

    wincl.lpszClassName = szClassName;

    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */

    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */

    wincl.cbSize = sizeof (WNDCLASSEX);


    /* Use default icon and mouse-pointer */

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

    wincl.lpszMenuName = NULL;                 /* No menu */

    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */

    wincl.cbWndExtra = 0;                      /* structure or the window instance */

    /* Use Windows's default colour as the background of the window */

    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;


 이렇게 설정이 된다.


 여기서 wincl.lpfnWndProc에서 설정이 함수를 설정이 된다.

 이걸로, 기본적으로 WIndows의 GUI의 메세지를 받아서 처리할 수 있게 한다.


 메세지는 운영체제에서 큐 자료형에서 받아들이는 것으로 사용자가 행동을 취하는 것을 받아들이는 매개체라고 보면 된다.


 예을 들어서 사용자가 마우스를 움직이면, 움직였다는 메세지가 생성되고, 그것을 프로그램이 받아들여서 사용하는 것이다.


     /* Run the message loop. It will run until GetMessage() returns 0 */

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

    {

        /* Translate virtual-key messages into character messages */

        TranslateMessage(&messages);

        /* Send message to WindowProcedure */

        DispatchMessage(&messages);

    }


 이걸 이용해서 프로그램이 항상 메세지를 받아들이도록하고, 만약, 종료 메세지가 들어오게 되면, 꺼지게 되게 하는 것은 WindowProcedure에 설정하여 종료 및 기타 이벤트를 사용할 수 있게한다.


'연습' 카테고리의 다른 글

Android Youtube API 사용하기 - 0. 라이브러리에 추가하기 -  (0) 2015.12.02
Win32 Text 출력.  (0) 2015.12.01
Win32 API 기본  (0) 2015.11.29
GCC 전처리 출력.  (0) 2015.11.28
GCC에서의 Inline ASM  (0) 2015.11.27
Posted by JunkMam
,