2012-08-13 2 views
0

WndProc 함수가있는 win32 래퍼 클래스가 있습니다. 정적 Wndproc을 사용하여 WndProc 멤버 함수에 메시지를 전달합니다.Win32 래퍼 WndProc의 다른 클래스에서 함수 호출

또한 내 win32 래퍼 클래스의 인스턴스를 만드는 또 다른 app 클래스가 있습니다.

나는 응용 프로그램 클래스의 사용자가 OnMouseClick() 또는 OnMouseMove()와 같은 이벤트를 나타내는 자신의 함수를 작성할 수 있기를 원하지만이 함수가 작동하려면 이벤트 함수 win32 래퍼 클래스의 Wndproc (앱 클래스에 대한 지식이없는)에서.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 각 이벤트 함수에 대한 포인터를 win32 래퍼 클래스에 보내고 포인터를 통해 호출해야합니까? 아니면 더 좋은 방법이 있습니까?

+0

Windows의 표준 기능인 "창 서브 클래 싱"이라고합니다. Google 검색어를 입력하고 첫 번째 조회수를 기록하십시오. –

답변

0

클래스 구조와 목적이 명확하지 않습니다. 그 정적의 WndProc 처리기에서 윈도우 이벤트를 수신 할 때

class BaseClass 
{ 
public: 
    virtual void OnMouseClick(...) { } // Empty body 
    virtual void OnMouseMove(...) { } // Empty body 
}; 

class AppClass : public BaseClass 
{ 
public: 
    void OnMouseClick(...) { AppCode } 
    void OnMouseMove(...) { AppCode } 
}; 

기본 클래스는 가상 메서드를 호출 : 그럼에도 불구하고, 래퍼 클래스의 전형적인 recommnded 구조는 다음과 같다. 그러면 앱 코드가 실행됩니다.

+0

나는 이것을 이해하고 이것이 나의 프로젝트의 일부이다. 그러나 D3DWindow라는 별도의 win32 래퍼 클래스를 다루는 방법을 묻지 만 BaseClass에서 인스턴스화됩니다. D3DWindow는 OnMouseclick/OnMouseMove()에 대한 지식이 없으므로이 작업을 수행하는 좋은 방법을 묻습니다. –

+0

그러면 필요한 것을 더 잘 설명하십시오. –

관련 문제