달력

22025  이전 다음

  • 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

Win32를 작성하기위한 기본적인 틀을 만들어 보기로 하겠다.

단순히 메인창을 다이얼로그박스로 띄울 뿐이다.

파일 생성은 다음과 같다.
step 01. VS 2008 >> 새 프로젝트 
step 02. Visual C++ >> Win32 >> Win32 프로젝트
step 03. ((이름과 위치는 원하는 것으로 설정 하고 확인))

== Win32 응용프로그램 마법사 대화상자가 활성화==
step 04. 응용프로그램 설정단계에서 빈 프로젝트 체크박스 체크
step 05. 마침 (솔루션에는 아무런 파일도 존재하지 않는다)

== 솔루션 탐색기의 프로젝트와 리소스, 소스, 헤더 파일이라는 폴더가 활성화 ==
step 06. 프로젝트에서 리소스를 추가한다.


step 07. ID값을 IDD_DIALOG_MAIN로 변경


step 08. 프로젝트에서 새항목을 추가한다.(단순히 Basic.cpp로 만들었다)

<결과> 솔루션 탐색기에 다음과 같이 파일이 정리 된다.

step 09. Basic.cpp에 코드를 작성한다. 코드는 다음과 같다.

// Basic.cpp

#include <Windows.h>
#include <Windowsx.h>
#include <tchar.h>
#include "resource.h"
#include "Main.h"

INT_PTR WINAPI MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpszCmdParam, int nCmdShow)
{
 // DialogBox생성 함수
 DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), HWND_DESKTOP, MainDlgProc);

 return 0;
}

// DialogBox Procedure
INT_PTR WINAPI MainDlgProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
 switch (iMessage)
 {
 case WM_INITDIALOG :
  //InitDialogBox(hWnd);
  return TRUE;

 case WM_COMMAND :
  switch (LOWORD(wParam))
  {
  case IDOK :
  case IDCANCEL :
   EndDialog(hWnd, IDOK);
   return TRUE;
  }
  return TRUE;
 }

 return FALSE;
}


참고:
SetDlgMsgResult :
Windowsx.h에 선언되어 있으며 메세지 크래커 이다.
Window Procedure(WindProc)지 크래커로는 HANDLE_MSG 매크로가 존재한다.
하지만 DialogBox에서는 이 매크로를 사용하기에는 적절하지 않다.
DlgProc는 WindProc과는 달리 LRESULT 대신 BOOL 값을 반환하게 된다.
그래서 HANDLE_MSG가 아닌 SetDlgMsgResult를 사용하였다.
사실.... 이렇게 짧은 코드에서는 필요하지 않으나... 기본 틀로 작성한것이다.


Posted by 위너즈
|