목차
1. 개요
2. 필요한 도구 및 라이브러리
3. 프로젝트 구조 및 파일 설명
4. 주요 코드 해석
5. 프로그램 실행 및 결과
1. 개요
- Win32 API를 사용하여 메시지 박스 띄우기 소개
이 예제에서는 기본적인 메시지 박스를 띄우는 간단한 프로그램 입니다.
1. 필요한 헤더 파일 포함 :
프로젝트에 필요한 헤더 파일들을 포함시킵니다.
#include "Windowsx.h"
#include "framwork.h"
#include "wchar.h"
2. 다이얼로그 프로시저 선언:
다이얼로그 이벤트 처리를 담당할 DlgProc 함수를 프로토타입으로 선언합니다.
INT_PTR CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
3. 메인 함수 정의:
프로그램의 진입점인 wWinMain 함수를 정의합니다. 여기서 DialogBox 함수를 사용하여 다이얼로그를 생성하고 DlgProc 함수를 콜백으로 전달합니다.
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), NULL, DlgProc);
return 0;
}
4. 다이얼로그 이벤트 처리:
다이얼로그 이벤트를 처리하는 DlgProc 함수를 정의합니다. 여기서는 다음과 같은 이벤트를 처리합니다.
WM_INITDIALOG: 다이얼로그 초기화
WM_CLOSE: 다이얼로그 닫기
WM_COMMAND: 다이얼로그에서 발생한 커맨드 처리
switch (message)
{
case WM_INITDIALOG: // 다이얼로그 초기화
return (INT_PTR)TRUE;
case WM_CLOSE: // 다이얼로그 닫기
// 다이얼로그를 종료하고 프로그램을 종료합니다.
EndDialog(hDlg, 0);
return (INT_PTR)TRUE;
case WM_COMMAND: // 다이얼로그에서 발생한 커맨드를 처리합니다.
if (LOWORD(wParam) == IDC_BUTTON_MSGBOX) {
MessageBox(NULL, "Hello, World!", "Win32 C++ Example", MB_OK);
}
}
- 프로그램의 기능과 목적 간단히 설명
위 코드는 사용자가 "MsgBox" 버튼을 클릭하면 다음 동작을 수행합니다.
DlgBox에 있는 "MsgBoxBtn" 클릭시 "Hello,World!"가 메시지 박스로 출력됨.
2. 필요한 도구 및 라이브러리
- Visual Studio 2019 설치
Visual Studio 2019 설치를 진행할때 ' 데스크톱 및 모바일' 에 '.NET 데스크톱 개발 ' , ' C++를 사용한 데스크톱 개발 ' 을 체크하여 설치한다.
C++을 사용한 데스크톱' 안에 있는 선택사항에서 ' 최신 v142 빌드 도구용 C++ MFC ' , ' v142 빌드 도구용 C++/CU 지원 ', 'V142 빌드 도구용 C++ 모듈 ', ' Windows 10 SDK (10.0.17763.0)' 을 선택하여 설치한다.
- Win32 API에 대한 간단한 소개
Win32 API는 윈도우 컴퓨터에서 돌아가는 프로그램들이 운영체제의 다양한 기능을 사용할 수 있도록 도와주는 도구입니다. 이 도구를 이용해서 프로그램 작성자들은 화면에 그림을 그리거나, 파일을 열고 저장하고, 인터넷에 연결하는 등의 작업을 쉽게 할 수 있습니다.
- 사용된 라이브러리(Commctrl.h, Windowsx.h 등) 설명
이 프로그램에서 사용된 라이브러리는 다음과 같습니다.
framework.h: 프로젝트에 필요한 헤더 파일과 라이브러리를 포함하는 헤더 파일입니다. 이 파일은 프로젝트 템플릿에 의해 자동 생성되며, 필요한 헤더 파일과 라이브러리를 추가하거나 수정할 수 있습니다.
Windowsx.h: Windows 프로그래밍의 편의를 위해 추가된 헤더 파일로, 다양한 매크로 및 함수를 제공합니다. 이 헤더 파일을 사용하면 Win32 API를 보다 효율적으로 사용할 수 있습니다.
wchar.h: C 표준 라이브러리의 일부로, 와이드 문자 관련 함수를 제공하는 헤더 파일입니다. 이 프로그램에서는 _snwprintf_s 함수를 사용하여 문자열을 포맷팅하기 위해 이 헤더 파일이 포함되었습니다.
이 프로그램에서 사용된 라이브러리들은 Win32 API 프로그램 작성을 지원하며, 각각의 라이브러리는 고유한 기능과 컨트롤을 제공합니다. 사용자 인터페이스를 구성하고 이벤트 처리를 수행하기 위해 이러한 라이브러리들을 사용하였습니다.
5. 전체 코드
- 전체 코드 및 주석
// 필요한 헤더 파일들을 포함시킵니다.
#include "Windowsx.h"
#include "framwork.h"
#include "wchar.h"
// DigProc 함수를 프로토타입으로 선언합니다.
INT_PTR CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
// wWinMain 함수는 프로그램의 진입점입니다.
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
// 다이얼로그 박스를 생성하고 DigProc 함수를 콜백으로 전달합니다.
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), NULL, DlgProc);
return 0;
}
// DigProc 함수는 다이얼로그 이벤트에 대한 처리를 담당합니다.
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
// 메시지에 따라 적절한 처리를 수행합니다.
switch (message)
{
case WM_INITDIALOG: // 다이얼로그 초기화
return (INT_PTR)TRUE;
case WM_CLOSE: // 다이얼로그 닫기
// 다이얼로그를 종료하고 프로그램을 종료합니다.
EndDialog(hDlg, 0);
return (INT_PTR)TRUE;
case WM_COMMAND: // 다이얼로그에서 발생한 커맨드를 처리합니다.
if (LOWORD(wParam) == IDC_BUTTON_MSGBOX) {
// DlgBox에서 "IDC_BUTTON_MSGBOX"의 ID를 가지고 있는 버튼을 클릭시 MSG 띄우기
MessageBox(NULL, "Hello, World!", "Win32 C++ Example", MB_OK);
}
}
return (INT_PTR)FALSE;
}
6. 프로그램 실행 및 결과
- 프로그램을 실행 결과
7. 마무리 및 추가 개선 방향
앞으로 Win32Api를 사용한 다양한 프로그램을 블로그로 작성해 보도록 하겠습니다.
추가 질문 사항 댓글로 작성해 주시면 친구 철지 답변드리겠습니다.
'C++' 카테고리의 다른 글
[C++] Detours (0) | 2024.06.21 |
---|---|
[C++] Win32API WebView2 (웹뷰) (0) | 2023.04.20 |
[C++] C++언어 (0) | 2023.04.14 |
[C++] Win32 API를 활용한 간단한 연락처 관리 프로그램 만들기(2일차) (0) | 2023.04.12 |
[C++] Win32 API를 활용한 간단한 연락처 관리 프로그램 만들기(1일차) (0) | 2023.04.07 |
댓글