2013-04-08 5 views
0

개체 포인터를 DialogBoxParam()의 다섯 번째 매개 변수로 전달하고 싶습니다. 여기 DialogBoxParam()에 매개 변수로 개체 포인터 전달

INT_PTR WINAPI DialogBoxParam(
    _In_opt_ HINSTANCE hInstance, 
    _In_  LPCTSTR lpTemplateName, 
    _In_opt_ HWND hWndParent, 
    _In_opt_ DLGPROC lpDialogFunc, 
    _In_  LPARAM dwInitParam 
);


DialogBoxParam()에 전화입니다 :

BOOL CALLBACK CallbackDlgProc(HWND hwndDlg, UINT Message, WPARAM wParam, LPARAM lParam) 
{ 
    switch(Message) 
    { 
     case WM_INITDIALOG: 
     { 
      MessageBox(NULL, (CHAR*)((*(MyClass*)lParam).myFile), "Title", MB_OK); 
      return TRUE; 
     } 
     case [...] 
    } 
} 
:

MyClass *myObject = new MyClass(); 
DialogBoxParam(
    GetModuleHandle(NULL), 
    MAKEINTRESOURCE(IDD_SELECT_ETC), 
    hwnd, 
    CallbackDlgProc, 
    (LPARAM)&myObject 
); 

그리고 여기 CallbackDlgProc() 내 시도 중 하나입니다 (으로 myfile 아는 것은 공공 문자는 myObject의 * 회원입니다)


어떻게 접근하고 편집 할 수 있는지 알 수 있습니다. myObject ~ CallbackDlgProc()?

답변

4

DialogBoxParam에 전달하면 주소 연산자 인 &을 사용하여 포인터를 가져옵니다. 그러나 이미 포인터이므로 포인터를 포인터 (MyClass**)에 전달합니다.

콜백 함수에서 코드를 조정하거나 주소 연산자를 사용하지 마십시오.

+1

잘 빠르지 만, 럭키 루크에게 감사드립니다. 전 Jönköping-er의 인사;) –