728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - Win32 프로그램 올려보기

 

2, http://yyman.tistory.com/485 / [MFC] 윈도우 프로그래밍 기초 - 윈도우 프로그램의 구조

3, http://yyman.tistory.com/486 / [MFC] 윈도우 프로그래밍 기초 - 윈도우 클래스 만들기

4, http://yyman.tistory.com/487 / [MFC] 윈도우 프로그래밍 기초 - 윈도우 객체 생성, 화면 띄우기

5, http://yyman.tistory.com/488 / [MFC] 윈도우 프로그래밍 기초 - 메시지 루프, 처리하기.

 

2~5번 글까지 잘 읽었다면, 이번에는 프로그램 전체 소스로 만들어 보겠습니다.

 


1. 새 프로젝트 만들기 

 

그림 1-1) 새 프로젝트 만들기, Visual Studio 2013

 

 

그림 1-2) 프로젝트 마법사, Visual Studio 2013

 

 

그림 1-3) 프로젝트 마법사, Visual Studio 2013

 

 

그림 1-4) 솔루션 탐색기, Visual Studio 2013

 

그림 1-5) 소스코드 파일 만들기

 

 


2. 구현(Implements)

 

<Basic.cpp>

#include <Windows.h>
#include <tchar.h>

 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

LPTSTR lpszClass = _T("BasicApi");


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
       HWND hWnd;
       MSG Message;
       WNDCLASS WndClass;


       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)WndProc;
       WndClass.lpszClassName = lpszClass;
       WndClass.lpszMenuName = NULL;
       WndClass.style = CS_HREDRAW | CS_VREDRAW;

 

       RegisterClass(&WndClass);

 

       hWnd = CreateWindow(lpszClass, LPTSTR(_T("제목")), WS_OVERLAPPEDWINDOW,
         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);

     

       ShowWindow(hWnd, nCmdShow);

      

       while (GetMessage(&Message, 0, 0, 0) )
       {
              TranslateMessage(&Message);
              DispatchMessage(&Message);
       }

 

       return Message.wParam;

}

 

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
      HDC hdc;
      PAINTSTRUCT ps;
 
      switch (iMessage)
     {
           case WM_CREATE:
                return 0;

           case WM_PAINT:
               hdc = BeginPaint(hWnd, &ps);
               EndPaint(hWnd, &ps);
               return 0;

           case WM_DESTROY:
               PostQuitMessage(0);
               return 0;

     }

 

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

 

 

 

 

 

그림 2-1) 윈도우 화면 출력하기

 


3. 응용 예제) WndProc에 윈도우 창 종료시 알림 메시지 처리

 

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
      HDC hdc;
      PAINTSTRUCT ps;

      int nReturn;
 
      switch (iMessage)
     {
           case WM_CREATE:
                return 0;

 

           case WM_PAINT:
               hdc = BeginPaint(hWnd, &ps);
               EndPaint(hWnd, &ps);
               return 0;

 

          case WM_CLOSE:

               nReturn = MessageBox(hWnd, _T("정말 종료하시겠습니까?"), _T("확인"), MB_YESNO);

 

               if(nReturn == IDYES)

                     DestroyWindow(hWnd);

 

               return 0;

 

 

           case WM_DESTROY:
               PostQuitMessage(0);
               return 0;

     }

 

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

 

 

 


4. 마치면서

이 코드는 잊어버려도 되지만, 윈도우 프로그램의 기본 구조는 반드시 알고 있어야 한다.

 

1. 윈도우 프로그램의 전체 구조

 

int WINAPI WinMain( .... ) // 프로그램의 시작점

{
      // 기본적인 윈도우의 형태를 생성

      // 메시지 루프를 돌린다.

}

 

LRESULT CALLBACK WndProc(......) // 메시지를 처리하는 프로시저

{

       // 윈도우 메시지를 처리한다.

}

 

2. 윈도우 프로그램의 구성 요소

    -> 1. 클래스 만들기(윈도우)

    -> 2. 객체 생성(윈도우)

    -> 3. 객체 화면 띄우기(윈도우)

    -> 4. 메시지 루프 돌리기

    -> 5. 메시지 처리하기

 


5. 참고자료(Reference)

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 메시지 루프, 처리하기.

 

앞서 두개의 글에서는

http://yyman.tistory.com/487 - [MFC] 윈도우 프로그래밍 기초 - 윈도우 객체 생성, 화면 띄우기

http://yyman.tistory.com/486 - [MFC] 윈도우 프로그래밍 기초 - 윈도우 클래스 만들기

 

윈도우의 객체를 만드는 기본 요소를 구현해보았다.

윈도우의 껍데기를 만드는 방법을 지금까지 수행하였는데, 이번에는 사용자로부터 명령을 받을 수 있는 기반을 만들어보고자 한다.

 


1. 원리

윈도우는 항상 루프(무한 반복)를 돌며 사용자의 메시지를 기다리고 있다가 메시지가 들어오면 받아서 처리한다.

 

1-1) 이벤트 처리 방식

-> 임의의 이벤트 (마우스 입력, 키보드 입력 등)가 발생할 때 처리하는 방식

 

 

음악을 재생하려면 플레이 버튼을 누른다. 버튼을 클릭하는 행위라고 볼 수 있지만, 근본적으로 이벤트 행위라고 볼 수 있다.

 


2. 메시지 루프

 

편집기(Editor) 프로그램의 경우, 키보드로부터 입력받은 문자를 화면에 출력하는 기능을 처리해야 한다.

이 때, IO Device(키보드, 마우스 등)으로부터 발생한 이벤트를 메시지 루프에서 감지하고 그 메시지를 윈도우 프로시져(Procedure) 함수로 보내주면, 화면에 해당하는 문자를 출력해준다.

 

즉, 윈도우 프로시져 함수로 메시지를 보내는 역할을 하는 것이 바로 메시지 루프의 역할이라고 할 수 있겠다.

 

 

 

 

이전 코드에 이어서

 

while ( GetMessage(&Message, 0, 0, 0) )

{

          TranslateMessage(&Message);   // 문자 입력을 처리하는 함수

          DispatchMessage(&Message);    // GetMessage() 함수로부터 전달된 메시지를 윈도우 프로시저로 보내는 역할 수행.

}

 

* 용어 정리

 

  용어 

 설명 

 시스템 큐

 시스템 큐는 운영체제가 가지고 있는 메시지 저장소로서 저장된 이벤트 메시지를 애플리케이션 큐로 넘겨준다.

 애플리케이션 큐

 애플리케이션 큐는 실행 중인 응용 프로그램마다 하나씩 가지고 있는 메시지 저장소이다.

 

while( ) 문으로 이루어진 메시지 루프는 GetMessage( ) 함수의 반환이 거짓이 될 때까지 계속 반복해서 돈다.

 


3. 애플리케이션에 대한 소개(읽어보기)

애플리케이션 큐는 응용프로그램이 소유한 메모리 버퍼라고 생각하면 된다.

우리가 직접 때때로 개발을 하다 보면, 애플리케이션 큐에 직접 메시지를 보내야 하는 경우가 있다.

 

-> 메시지 전달 함수 API에는 SendMessage()와 PostMessage() 함수가 있음.

 

* SendMessage() 함수

모든 메시지는 시스템 큐에서 애플리케이션 큐를 거쳐 윈도우 프로시져 함수로 전달된다고 알고 있으나, 이러한 과정을 모두 무시하고 윈도우 프로시저 함수로 바로 전달되는 메시지가 있다(). SendMessage()가 이러한 역할을 수행해준다.

이 함수는 메시지가 완전히 처리되기 전까진 반환되지 않는다. 메시지 처리 후 반드시 처리 확인이 필요한 경우에 이 함수를 사용하도록 한다.

 

* PostMessage() 함수

PostMessage() 함수를 이용하면 메시지는 시스템 큐를 거치지 않고, 직접 애플리케이션 큐에 보내진다. 이 함수로 메시지를 보내면 곧바로 반환되므로, 해당 메시지를 바로 처리하지 않고도 해당 메시지를 붙인 스레드는 다른 작업을 할 수 있다 즉, 메시지가 비동기적으로 처리 되어도 상관없는 경우에 이 함수를 사용한다.

 

쉽게 이해하려면, 저 함수의 Send, Post라는 단어로 유추해서 생각해보면 쉬울 것 같다.

마치 우편 수화물하고 같은 원리라고 보면 이해하기 쉬울 것 같다. (이메일의 경우, 보낸 후 수신확인을 통해 상대방이 확인했는지 확인하는 과정과 매우 흡사하다.

 


4. 메시지 처리하기

메시지 루프를 통해서 윈도우 프로시저로 전달된 메시지는 윈도우 프로시저가 구분하여 작업을 처리하게 된다.

따라서, 실질적인 코딩은 여기서 이뤄진다고 볼 수 있다.

 

WndProc()의 코드

 

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

}

 

       HDC hdc;

       PAINTSTRUCT ps;

      

       switch(iMessage){

             case WM_CREATE:

                    return 0;

             case WM_PAINT:

                    hdc = BeginPaint(hWnd, &ps);

                    EndPaint(hWnd, &ps);

                    return 0;

             case WM_DESTROY:

                    PostQuitMessage(0);

                    return 0;

       }

 

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

 

}

 

코드 해설

 

1. WndProc( )의 인수 구성요소

 

 

 인수 

  설명

 hWnd

 메시지를 받을 윈도우 핸들이다.

 iMessage

 전달된 메시지 값이다. 어떤 종류의 메시지인지, 즉 어떤 변화가 발생했는지에 대한 정보를 가지고 있다.

 wParam

 iMessage에 따른 부가 정보를 갖는다.

 예를 들어서 마우스 왼쪽 버튼이 눌렸을 때, 즉, WM_LBUTTONDOWN 메시지가 발생했을 때, 화면 어디쯤 위치에

 마우스 버튼이 눌러졌는지, 조합된 키가 눌러졌는지(Ctrl, Alt, Shift, 등....) 등의 정보가 필요하다.

 이러한 정보들이 wParam과 lParam에 각각 전달되며, 실제로 wParam과 lParam에 저장되어 있는 정보는 다르다.

 lParam

 

 

 

2. 메시지 구분

윈도우 프로시저의 4개의 인수 중에 iMessage에는 전달된 메시지 값이 담겨 있다.

바로 이 값으로 어떤 메시지가 들어왔는지 구분한다.

이 때 switch 문이 쓰인다.

switch 문의 괄호에 iMessage에 값에 따라 case 문으로 분기처리 된다.

 

case WM_LBUTTONDOWN:

return 0;작업처리

       return 0;

 

case 문에서 처리되지 않는 메시지는 DefWindowProc() 함수로 넘긴다.

 

3. DefWindowProc() 함수

이 함수는 WndProc에서 case문으로 처리하지 못한 메시지를 처리해준다.

 

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

{

 

      

 

}

 

 


5. 참고자료

반응형
728x90
300x250
[MFC] 윈도우 프로그래밍 기초 - 윈도우 객체 생성, 화면 띄우기

 

이번에는 윈도우 객체 생성 및 화면을 띄우는 방법에 대해서 소개하고자 합니다.

 


1. 윈도우 객체 생성

CreateWindow()의 원형 소개

 

 HWND CreateWindow(

       LPCTSTR lpClassName,

       LPCTSTR lpWindowName,

       DWORD dwStyle,

       int x, int y,

       int nWidth, int nHeight,

       HWND hWndParent,

       HMENU hMenu,

       HANDLE hInstance,

       PVOID lpParam);

 

 - lpClassName : 윈도우의 클래스를 지정하는 문자열이다.

 - lpWindowName : 윈도우의 제목 표시줄에 보여줄 문자열이다.

 - dwStyle : 윈도우의 스타일을 지정한다.

 - x, y : 윈도우의 좌표를 지정한다.

 - nWidth, nHeight : 윈도우의 폭과 높이를 장치 단위(픽셀)로 지정한다.

 - hWndParent : 부모 윈도우 또는 소유주 윈도우의 핸들을 지정한다.

 - hMenu : 겹쳐진(Overlapped) 윈도우나 팝업 윈도우의 경우 메뉴의 핸들을 지정한다.

 - hInstance : 윈도우를 생성하는 인스턴스 핸들을 지정한다.

 - lpParam : WM_CREATE 메시지의 인수 IParam으로 전달될 CREATESTRUCT 구조체의 포인터이다.

 

실제 코드 적용 )

 

 

 "이전 글 - http://yyman.tistory.com/entry/MFC-윈도우-프로그래밍-기초-윈도우-클래스-만들기"

  

 (중략)

 

 hWnd = CreateWindow(lpszClass, LPTSTR(_T("태스트")), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL); 

 


2. 윈도우 객체 화면 띄우기

 

ShowWindow() 원형

 

 BOOL ShowWindow(HWND hWnd, int nCmdShow); 

 

 <nCmdShow 설정 값>

 

 설정 값

설명 

SW_FORCEMINIMIZE 

윈도우 2000 이후에만 쓸 수 있는 Flag.

-> 윈도우를 소유한 스레드(Thread)가 차단(Block)된 상태에서도 윈도우를 최소화시킨다. 

SW_HIDE 

윈도우를 숨긴다. 

SW_MAXIMIZE 

윈도우를 최대화 시킨다. 

 SW_MINIMIZE

윈도우를 최소화 시킨다. 

SW_RESTORE 

최대화나 최소화된 윈도우를 이전 상태로 복구한다. 

SW_SHOW 

윈도우를 활성화시켜서 화면에 띄운다. 

SW_SHOWDEFAULT 

STARTUPINFO 구조체가 지정하는 보기 상태로 만든다. 

SW_SHOWMAXIMIZED 

윈도우를 최대화된 상태로 활성화한다. 

SW_SHOWMINIMIZED 

윈도우를 최소화한 상태로 활성화한다. 

SW_SHOWMININOACTIVE 

윈도우를 최소화 상태로 화면에 띄우며 활성화 상태 그대로 변경되지 않는다.

SW_SHOWNA  

윈도우를 현재 상태로 화면에 띄우며 활성화 상태 그대로 변경되지 않는다.

 SW_SHOWNOACTIVATE

최근 크기와 위치에 윈도우를 띄우며 활성화 상태 그대로 변경되지 않는다. 

SW_SHOWNORMAL 

윈도우를 화면에 띄우며 활성화한다.

만약(If), 윈도우가 최소화되어 있거나 최대화 되어 있다면 윈도우를 원래 크기로 복구한다. 

 

 

 

 

 이전 코드 참고 - http://yyman.tistory.com/entry/MFC-윈도우-프로그래밍-기초-윈도우-클래스-만들기

 

 (중략)

 

 hWnd = CreateWindow(lpszClass, LPTSTR(_T("태스트")), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL); 

 

 ShowWindow(hWnd, nCmdShow);

 

 

반응형
728x90
300x250
[MFC] 윈도우 프로그래밍 기초 - 윈도우 클래스 만들기

 

WinMain 함수에서 첫 번째 단계가 윈도우 클래스를 만드는 과정입니다.

~RegisterClass( & ...... ) 까지 만드는 과정을 윈도우 클래스를 구현한다고 보시면 됩니다.

 

Winuser.h 파일에 윈도우 클래스 생성을 위한 구조체 구조를 소개하겠습니다.

 


1. WNDCLASS 구조체

 

typedef struct tag WNDCLASS{
     UINT style;

     WNDPROC lpfnWndProc;

     int cbClsExtra;

     int cbWndExtra;

     HINSTANCE hInstance;

     HICON hIcon;

     HCURSOR hCursor;

     HBRUSH hbrBackground;

     LPCSTR lpszMenuName;

     LPCSTR lpszClassName;

 winuser.h의 구조체

 

* 클래스를 생성하는 원리만 이해하면 되므로, 현재의 코드는 암기하시거나 할 필요는 없습니다.

 


2. 구현(Implements)

 

 

 #include <Windows.h>
 #include <tchar.h>

 

 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 

 LPTSTR lpszClass = _T("TestApp");

 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParameter, int nCmdShow){

 

      HWND hWnd;
      MSG Message;

      WNDCLASS WndClass;

      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)WndProc;
      WndClass.lpszClassName = lpszClass;
      WndClass.lpszMenuName = NULL;
      WndClass.style = CS_HREDRAW | CS_VREDRAW;

      RegisterClass(&WndClass);

}


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

 

       // 이 영역은 다음에 언급하겠습니다.

 

}

 

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 윈도우 프로그램의 구조

 

윈도우 프로그램은 기본적으로 아래에서 소개되는 구조를 가진다.

표 1-1의 구조를 시작으로 글을 시작하고자 한다.

 


1. 큰 틀에서 바라보기.

 

WinMain( ) 함수와 WndProc( ) 함수로 구성된다.

-> 함수의 이름은 임의로 바꿀 수 없음. (이미 정해져 있는 규칙)

 

                                                                  표 1-1. 구조

 

 WinMain( )
{
       윈도우 클래스 만들기

       윈도우 객체 생성하기

       윈도우 객체 화면에 띄우기

       메시지 루프 돌리기
}

 

WndProc( )
{
       전달된 메시지 처리하기
}

 

WinMain( ) 함수는 프로그램의 윈도우 자체를 생성만 한다.

WndProc( ) 함수는 실제 일어나는 윈도우 메시지를 처리하는 역할을 수행한다.

 

 


2. WinMain() 함수가 하는 일 소개

 

                                                             표2-2. 함수가 하는 일

 

 WinMain( )
{
       윈도우 클래스 만들기 - (RegisterClass( ... )

       윈도우 객체 생성하기 - (CreateWindow( ... )

       윈도우 객체 화면에 띄우기 - (ShowWindow( ... )

       메시지 루프 돌리기 (while(GetMessage( ...... ) ) )
}

 

 


3. WndProc() 함수가 하는 일 소개

 

메시지 처리 함수 : WndProc( )

 

 

 

 

 

메시지 루프로부터 전달받은 윈도우 메시지를 처리한다. (WndProc)

 

 

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - API와 Hello World.

 

 

1. 용어 학습

* API(Application Programming Interface)란 영어 해석 그래도 응용 프로그램을 만드는 데 필요한 함수들의 집합.

 

* SDK(Software Development Kit)라는 말로도 사용

-> Microsoft에서 SDK 파일 설치를 종종 볼 수 있는 데, 이게 응용 프로그램을 만드는 데 필요한 함수들의 집합을 미리 설치한다는 의미로 
해석해볼 수 있음.

 

MFC(Microsoft Foundation Class)라는 것의 근간은 API에서 되었다고 볼 수 있음.

 

2. 용어 학습

 

C언어나 C++에서 한번이라도 해봤던 Hello World 프로그램을 윈도우 프로그래밍을 통해서 실습.

 

main()
{
       printf("Hello World!");
}

 

// C언어 기준

 

 

실습 프로그램 : Visual Studio 2013

 

1. 먼저, 당연히 Visual Studio 2013을 실행시켜야합니다. 

 

 

파일에서 새로 만들기(N) -> 프로젝트(P)를 클릭합니다.

 

Win32프로젝트 클릭합니다.

이번 실습에선 그냥 Win32Project1으로 이름 지정하겠습니다.

확인을 누릅니다.

 

 

다음을 클릭합니다.

 

 

빈 프로젝트에 체크를 한 후 마침을 클릭합니다.

 

 

 

솔루션 탐색기를 선택하고, 그림과 같이 컨텍스트 메뉴를 통해(오른쪽 버튼을 클릭하여) cpp파일을 생성합니다.

 

추가를 클릭합니다.

 

3. 코드 작성하기

 

#include <Windows.h>

#include <tchar.h>

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdline, int nCmdShow){

 

MessageBox(NULL, _T("Hello World"), _T("메시지"), MB_OK);

return 0;

 

}

 

 

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 핸들에 대한 이해

 

핸들이란 어떤 대상에 붙여진 레이블(Label)과 같은 것으로, 대상을 식별하는 데 사용한다.

그리고 핸들을 이용하여 특정 대상을 관리할 수도 있다.

 


대상이란,

 

Windows(윈도우), Control(컨트롤)

 

eg) 자동차가 윈도우라고 가정했을 때, 각 자동차에는 핸들 등이 있음.

   -> 이를 가지고 원하는 방향으로 조작가능

 

- 핸들 값은 예외없이 모두 접두어 h로 시작한다.

- 핸들은 정수형이며 32bit 값이다.

- 핸들은 운영체제가 발급하며, 사용자는 할당된 핸들을 쓰기만 하면 된다.

- 같은 종류의 핸들끼리는 절대 중복된 값을 가지지 않는다.

- 핸들은 단순한 구분자이므로 핸들에 어떤 값이 들어가 있는지 알 필요가 없다.

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 타입 재정의

 

 

 자료형 

 의미 

 BYTE 

 unsigned char형 

 WORD 

 unsigned short형 

 DWORD 

 unsigned long형 

 LONG 

 long형과 같음 

 LPSTR 

 char*형과 같음 

 BOOL 

 정수형이며, TRUE 혹은 FALSE을 갖는다. 

 

기타)

HINSTANCE의 경우, 정수형이지만 핸들의 의미를 가짐.

 

실행의 다양한 예)

#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* lpcmdLine, int nCmdshow)
{

 

}

 

#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nCmdshow)
{

 

}

 

#include <Windows.h>
#include <tchar.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nCmdshow)
{

 

 


저 부분은 저런 구조로 사용할 수 있구나 이정도만 봐두시면 됩니다.

이전 글에서 WinMain()의 타입 재정의의 형태를 표현해놓은 겁니다.

앞 전의 글과 http://yyman.tistory.com/481, ([MFC] 윈도우 프로그래밍 기초 - WinMain() 함수)랑 같이 이어서 진행되는 부분입니다.

반응형

+ Recent posts