기존 대화 상자에서 하위 대화 상자를 만들려면 어떻게해야합니까?기존 대화 (Windows API)에서 하위 대화 상자를 만들려면 어떻게해야합니까?
선언 (전역)
HINSTANCE hInst;
HWND hWnd;
WinMain
:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN),hWnd, (DLGPROC)DlgProc);
//MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);
return 0;
}
DlgProc
:
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_ABOUT:
//DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT),hWnd, (DLGPROC)AboutDlgProc);
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT),hWndDlg, (DLGPROC)AboutDlgProc); //changed to this...
return 0;
}
break;
}
}
AboutDlgProc
:
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
hInst = ((LPCREATESTRUCT) lParam)->hInstance ;
return 0;
case WM_INITDIALOG :
ShowWindow (hDlg, SW_HIDE);
return TRUE ;
case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDOK :
case IDCANCEL :
EndDialog (hDlg, 0) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
이라는 메뉴 항목을 클릭하면 약 (IDM_ABOUT)이지만 아무 일도 발생하지 않았습니다. About 대화 상자를 만들려면 어떻게해야합니까?
편집
대화에 대해 지금 당장 poped 할 수 있습니다. 대화 상자가 전에 팝업 될 수없는 이유는 내가 MFC 링크 대화 상자를 제어하기 때문입니다. 내 win32 SDK 응용 프로그램은 MFC를 지원하지 않으므로 실패했습니다. LOL.
hWnd 전역 범위에서 delcared, About 대화 상자의 프로 시저에 hWndDlg 전달 여전히 대화 상자를 열 수 없습니다. – tunpishuang
Mark Ransom의 답변도 시도해 봤습니까? hinstance의 전체 복사본을 초기화하는 것처럼 보이지 않으므로 대화 상자 리소스를 찾지 못할 가능성이 있습니다. (나는 대화 procs가 WM_CREATE를 얻지 않는다고 생각한다.) 부모님을 위해 오른쪽 창 핸들을 사용하면 그 문제를 해결할 수있다. –
질문이 해결되었습니다. ** 수정 ** 섹션에서 도움을 주신 이유를 알려 주셨습니다. – tunpishuang