2012-04-03 3 views
0

복잡한 데이터 구조를 조작하기위한 GUI 인터페이스를 제공하는 MFC 프로젝트가 있습니다 (CompleicatedClass라고 부르 자). 이 클래스를 많이 사용해야하는 WTL 프로젝트가 있습니다. 이 클래스의 한 인스턴스 만 관리 할 수 ​​있기를 원하며 각 프로젝트에 자체적 인 ComplicatedClass 복사본이 없기를 바랍니다.C++ MFC - MFC DLL과 WTL EXE간에 데이터 공유?

이 프로젝트에서이 클래스의 한 인스턴스를 공유하려는 경우 안전하고 안정적인 방식으로이 작업을 수행하려면 어떻게해야합니까? 나에게 유일한 대안은 기본적으로 클래스의 사본 두 개 (MFC 프로젝트에서 관리하는 클래스와 WTL 측에서 관리하는 클래스)를 갖는 것입니다.

답변

0

두 장이 필요하지 않습니다. 어떻게 응용 프로그램이 구조화되어 있는지 언급하지 않지만 MFC 프로젝트는 .exe이고 WTL 하나는 dll이라고 가정합니다. ComplicatedClass *를 취하고 dll에서 사용할 수 있도록 저장하는 dll에서 함수를 내 보냅니다. 여기서는 CompleicatedClass에 UI 데이터 (즉, CWnd 파생 객체 없음)가 없다고 가정합니다. 그렇다면 HWND를 적절하게 포장하거나 win32 전용 메시징 (예 : SendMessage 만 사용)에 충실하도록주의해야합니다.

이것은 일반적인 조언이며 귀하의 질문은 다른 것에 충분하지 않습니다. 예를 들어 나는 두 권의 사본이 있어야한다고 결론을 내리는 이유를 알지 못합니다. 한 포인터에서 다른 포인터로 포인터를 전달하면 포인터에 액세스 할 수 있습니다.