2010-07-18 5 views
1

부모 대화 상자 클래스에서 모덜리스 자식 대화 상자를 만들고 있는데, 부모 창의 클래스 데이터를 내가 만들려고하는 모든 자식 대화 상자 클래스와 공유하려고합니다. 내가 어떻게 할거 니?Modeless Child Dialog

+0

클래스 데이터가 의미하는 것을 자세히 설명 할 수 있습니까? WindowClass 또는 부모를 구현하는 클래스에 대한 포인터? 자식 대화 상자를 만드는 방법 (API 호출은 무엇입니까?) –

+0

부모 클래스의 함수에 자식 클래스로 접근하고 CreateDialog API를 사용하는 부모 클래스 내부에 자식 클래스의 인스턴스를 생성하여 자식 대화 상자를 만들고 싶습니다. – Kevin

답변

0

하나 그것을하는 방법은 SetWindowLongPtr()을 사용하는 것입니다

SetWindowLongPtr(hwndParent, GWLP_USERDATA, (LONG_PTR)&parent_class); 

이 부모 클래스의 주소로 부모 HWND에 USERDATA 필드를 설정합니다. 그런 다음 WM_INITDIALOG 처리기에서 부모 HWND에 GetWindowLongPtr()을 호출하고 올바른 포인터 유형으로 다시 캐스팅하십시오.

그것을 할 수있는 더 나은 방법은 당신이 당신의 부모 클래스에 대한 포인터가 될 것입니다 당신이 dwInitParam 필드에 전달하는 값을 얻을 것이다 CreateDialogParam()를 사용하고 WM_INITDIALOG 핸들러에하는 것입니다.