본문 바로가기

Programming/Win32&MFC&COM

MFC에서 프로그램의 hInstance와 hWnd 구하기

반응형

MFC에서 hInst와 hWnd를 필요로 할 때가 있습니다.

Win32 API함수 등을 이용할 때 사용해야 할 필요가 생깁니다.

// hInstance를 구하는 법
AfxGetInstanceHandle();
// hWnd를 구하는 법
GetSafeHwnd();

이 2개를 이용해서 사용하면 됩니다.

예제 코드는 다음과 같습니다.

::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, ::GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE) | WS_EX_LAYERED);
this->SetLayeredWindowAttributes(RGB(0, 0, 255), 128, LWA_ALPHA | LWA_COLORKEY);

윈도우를 투명하게 만들어주는 코드로 GetSafeHwnd()가 사용되는 것을 볼 수 있습니다.

다이어로그 기반에서 이렇게만 넣어줘도 다이어로그의 투명화가 이루어집니다.

물론 이런 방법 말고도 해당 윈도우 내에서 사용할 때는 this->m_hWnd를 쓰셔도 됩니다.

핸들을 반환하는 함수는 대부분 유효하지 않은 객체에 대해서는 NULL을 리턴합니다.

NULL 체크를 하는 코드를 반드시 추가하는 것을 권장합니다.

반응형