既存のダイアログから子ダイアログを作成するにはどうすればよいですか?既存のダイアログ(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ダイアログを作成するにはどうしたらいいですか?
EDIT
についてのダイアログが出てpopedすることができます。 aboutダイアログが以前にポップアウトできない理由は、私がMFC Linkをドラッグしてダイアログボックスを制御する理由です。私のwin32 sdkアプリケーションはMFCをサポートしていないので、失敗しました。笑 。
hWndはグローバルスコープでdelcaredですが、AboutダイアログのプロシージャにhWndDlgを渡してもAboutダイアログを開くことができません。 – tunpishuang
Mark Ransomの答えも試しましたか? hinstanceのグローバルコピーを初期化しているようには見えないので、ダイアログリソースが見つからない可能性があります。 (私は、ダイアログprocsがWM_CREATEを取得しないと思う)。そのプラスは、親のための右のウィンドウハンドルを使用して問題を解決する必要があります。 –
質問が解決しました。私は** EDIT **セクションの理由を教えてくれました。 – tunpishuang