본문 바로가기
::public/윈도우즈 응용 프로그래밍

기본 소스 코드 구성(생략본)

by 해맑은욱 2019. 9. 23.
// MyWindowsProject.cpp : 응용 프로그램에 대한 진입점을 정의합니다.
// 기존 코드의 내용들 생략..
 
#include "stdafx.h"
#include "MyWindowsProject.h"
 
// 사용자가 메시지를 처리하는 함수.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        // 프로그램 종료
        PostQuitMessage(0);
        break;
    default:
        // 자신이 처리하지 않는 메시지들의 기본 작업을 대신 처리해주는 함수.
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,           // 프로그램의 instance 핸들 값.
                     _In_opt_ HINSTANCE hPrevInstance,    // 현재 사용안함. 항상 NULL.
                     _In_ LPWSTR    lpCmdLine,            // 하나의 문자열로 실행인자가 전달됨.
                     _In_ int       nCmdShow)             // 초기 기작 형식이 전달됨.
{
    // 윈도우 클래스 등록
    WNDCLASSEXW wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = IDI_APPLICATION;
    wcex.lpszClassName = L"MyWindow";
    wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    
    RegisterClassExW(&wcex);
 
    // 윈도우 생성
    HWND hWnd = CreateWindowW(L"MyWindow", L"scriptplay.tistory.com", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    // 프로그램에 전달된 메시지를 번역하고 실행하는 작업.
    MSG msg;
    while (GetMessage(&msg, nullptr, 00))    // 메시지를 큐에서 읽는 함수.
    {
        TranslateMessage(&msg);                // 가상 키 메시지이면 ASCII 형태의 메시지를 추가로 생성.
        DispatchMessage(&msg);                 // 변환된 메시지를 처리하는 함수.
    }
 
    return (int) msg.wParam;
}
 
// MSG 구조체
typedef struct tagMSG
{
   HWND     hwnd;       // 메시지가 발생한 윈도우 핸들
   UINT     message;    // 발생한 메시지 아이디
   WPARAM   wParam;     // 메시지와 함께 전달된 32비트 데이터
   LPARAM   lParam;     // 메시지와 함께 전달된 32비트 데이터
   DWORD    time;       // 메시지가 전달된 시간(초단위)
   POINT    pt;         // 메시지가 전달되었을 때 화면 마우스 기준의 좌표 값
}MSG;
cs

'::public > 윈도우즈 응용 프로그래밍' 카테고리의 다른 글

CreateBitmap / CreateCompatibleBitmap  (0) 2019.09.23
Windows API  (0) 2019.09.23
Window Class  (0) 2019.09.22
HINSTANCE  (0) 2019.09.22
핸들(Handle)  (0) 2019.09.22