다른헤더에 클래스에서, 윈도우 핸들 참조하는 방법,

다른헤더에 클래스에서, 윈도우 핸들 참조하는 방법,

작성일 2011.02.09댓글 1건
    게시물 수정 , 삭제는 로그인 필요

 

CWinMain.h 에 윈도우 창 띄우는 CWinMain 클래스가 있습니다.

윈도우 핸들은

CWinMain 클래스 안에서 private로 HWND  hWnd; 이렇게 선언되어 있거든요..

main.cpp에서는

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszArgs, INT nWinMode)
{
 CWinMain WinMain;
 WinMain.WinMain(hInstance);
}

이런식이구요.

그런데 B.h 안에 있는 B 클래스에서 저 hwnd를 참조할수 있을까요 .

마우스 좌표를 받아오기 위하여

ScreenToClient(HWND hwnd,LPPOINT lp); 이함수를 써야하거든요....

=

POINT Mt;

ScreenToClient(hwnd,&Mt);

이 hwnd 부분...어떻게 해야 참조 할수 있을까요.



profile_image 익명 작성일 -

ScreenToClient함수는 마우스의 위치를 보정하기 위해 사용합니다.
즉, 마우스의 위치정보는 취득된 상태라는 전제가 필요합니다.

ScreenToClient함수를 호출하기 전에, 마우스의 위치로부터 윈도우 핸들을 취득한 후에
ScreenToClient함수를 호출하는 것이 일반적인 방법입니다.

마우스의 위치로부터 윈도우 핸들을 취득하기위한 함수로 WindowsFromPoint 라는 함수가 있고,
비표시나 무효화된 윈도우의 핸들을 취득하기 위한 함수로는 ChildWindowsFromPoint 가 있습니다.
http://msdn.microsoft.com/ko-kr/library/aa921344.aspx
http://msdn.microsoft.com/ko-kr/library/aa932378.aspx

이런식으로 사용하니까 참고해서 수정해 보시기 바랍니다.

    POINT pt;
    HWND hwnd;

    // 화면상의 마우스의 위치를 취득한다
    GetCursorPos(&pt);

    // 마우스의 포인터가 위치한 윈도우의 핸들을 취득한다
    hwnd = WindowFromPoint(pt);

    // 마우스의 위치를 화면위치로 부터 윈도우 위치로 변환한다
    ScreenToClient(hwnd, &Mt);

C++에서 헤더파일 참조 문제

... 여기서, 또다른 헤더파일 H1.h, H2.h을... 서로 참조되어 컴파일러가 알수없게 되버립니다.. 2. CTestClass m_myClass 처럼 헤더에서 멤버 클래스로...

IPv6 헤더구조 관련하여 에러 문의...

IPv6의 구조체가 이럴때 (/local/include/netinet/ip6.h 참조함.)... 컴퓨터 세계도 이와 마찬가지라서 윈도우와... 네트웍 클래스를 또 다른 서브 네트웍으로 분류하기를 원할...

mfc 새로만든 클래스의 정보를...

... 유연한 방법) 뷰의 헤더에서 class Position; // 전방... 그래서,,,이러한 이유로 종종 다른 클래스에서클래스의 객체를 가질 때...다큐먼트의 헤더도...