gpt4 book ai didi

c - 如何从现有对话框(Windows api)创建子对话框?

转载 作者:行者123 更新时间:2023-11-30 14:28:08 31 4
gpt4 key购买 nike

如何从现有对话框创建子对话框?

声明(全局范围)

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;
}
}

关于DlgProc:

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对话框,是因为我拖拽了一个MFC Link控件到对话框中。由于我的win32 sdk应用程序不支持MFC,所以它失败了。哈哈。

最佳答案

如果您没有初始化在调用 DialogBox 时使用的 hInst,则调用将失败,因为找不到对话框资源。在跟踪此类错误时,您确实应该检查系统调用的返回值。

关于c - 如何从现有对话框(Windows api)创建子对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598171/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com