如何從現有對話框創建子對話框?如何從現有對話框(窗口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),但什麼也沒有發生。 那麼如何創建一個關於對話框?
編輯
關於對話框現在可以POP操作了。之前關於對話框無法拖出來的原因是我拖動了一個MFC鏈接控制對話框。由於我的win32 sdk應用程序不支持MFC,所以它失敗了。大聲笑 。
hWnd在全局範圍內顯示,通過hWndDlg到About對話框的程序仍然無法打開About對話框。 – tunpishuang
你也試過Mark Ransom的回答嗎?它看起來並不像您正在初始化您的全球副本,因此可能無法找到對話資源。 (我不認爲對話框過程得到WM_CREATE。)這加上使用正確的父窗口應該解決問題。 –
問題已解決,我已在**編輯**部分給出原因,感謝您的幫助。 – tunpishuang