카테고리 없음
윈도우 핸들, 인스턴스, 클래스
에어버스
2016. 5. 22. 15:34
HWND hWnd = CreateWindow(...);
CreteWindow() 함수로 윈도우 만들고 만들어진 윈도우 핸들을 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
...
WNDCLASSEXW wcex;
wcex.lpszClassName = szWindowClass;
...
RegisterClassExW(&wcex); // 윈도우클래스 등록
...
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
... |
cs |
메인 윈도우 등록과 생성을 보여주는 코드이다.
1. 윈도우 인스턴스 (1행)
메인함수(wWinMain)의 인수로 받음.
프로그램이 여러번 실행되면 인스턴스는 실행된 횟수만큼 수가 된다.
2. 윈도우 클래스 이름 (8행)
윈도우 클래스 이름을 지정한 후 클래스를 등록한다.
3. 윈도우 핸들 (12행)
윈도우를 만들때 클래스 이름과 인스턴스를 인수로 지정하여 만들고, 만들어진 윈도우 핸들을 반환한다.
===============
1. 인스턴스 얻기
HINSTANCE hInstance = ::GetWindowLong(hWnd, GWL_HINSTANCE); // 핸들 필요
http://petra.tistory.com/825 - GetWindowLong 인수 플래그 참고
2. 클래스 이름 얻기
char ClassName[256];
::GetClassName(hWnd, ClassName, sizeof(ClassName)); // 핸들 필요
3. 클래스 정보 얻기
WNDCLASS WndClass;
::GetClassInfo(hIntance, ClassName, WndClass); // 인스턴스 필요