HWND hwnd = CreateWindowEx(
0,
"MyWindowClass",
"My Window",
WS_OVERLAPPEDWINDOW, 100, 100, 800,
600, NULL, NULL, hInstance, NULL
);
HDC hdc = GetDC(hwnd);
// 윈도우 그리기 작업 수행
ReleaseDC(hwnd, hdc);
HINSTANCE
는 현재 실행 중인 프로그램의 인스턴스를 식별하는 핸들입니다. 주로 프로그램이 시작될 때 WinMain
함수에 전달됩니다.int WINAPI WinMain(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hprevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow
)
HINSTANCE hInstance = GetModuleHandle(NULL);
HANDLE
은 다양한 윈도우 자원을 나타내는 일반적인 핸들 타입입니다.HANDLE hFile = CreateFile(
"example.txt",
GENERIC_READ,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
Resource를 사용하기 전에 Resource에 대한 Handle값을 얻어야 합니다.
Resource가 생성 전이라면 메모리에 생성됩니다. 이후 가상 메모리 공간에 실제 Resource 객체를 참조하는 객체가 생성됩니다.
생성되어 있다면 가상 메모리 공간에 Resource 객체를 참조하는 객체가 생성되고 Resource 객체를 가리킵니다.
Handle은 가상 메모리 공간에 존재하는 객체를 참조하는 정수형 주소 값입니다.
HWND hwnd = CreateWindowEx(
0, "MyWindowClass",
"My Window", WS_OVERLAPPEDWINDOW,
100, 100, 800, 600, NULL, NULL,
hInstance, NULL
);
HANDLE hFile = CreateFile(
"example.txt", GENERIC_READ,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL
);
Window Handle과 File Handle을 획득하는 예시입니다.
획득한 Handle을 사용하여 Resource를 조작하거나 사용합니다.
// 윈도우 업데이트
UpdateWindow(hwnd);
// 파일 읽기
DWORD bytesRead;
char buffer[100];
ReadFile(
hFile, buffer, sizeof(buffer),
&bytesRead, NULL
);
Resource들을 더 이상 사용하지 않을 때 Handle을 통해 해당 Resource들을 해제합니다.
// 윈도우 해제
DestroyWindow(hwnd);
// 파일 닫기
CloseHandle(hFile);