gpt4 book ai didi

c++ - 你必须注册一个对话框吗?

转载 作者:行者123 更新时间:2023-11-30 03:12:51 25 4
gpt4 key购买 nike

因此,对于任何类型的 Windows 相关编程,我都是一个初学者。我一直在研究 Windows API 并遇到了几个关于如何初始化创建窗口等的示例。

一个示例创建一个常规窗口(我缩写了一些代码):

int WINAPI WinMain( [...] )
{

[...]

// Windows Class setup
wndClass.cbSize = sizeof( wndClass );
wndClass.style = CS_HREDRAW | CS_VREDRAW;
[...]

// Register class
RegisterClassEx( &wndClass );

// Create window
hWnd = CreateWindow( szAppName, "Win32 App",
WS_OVERLAPPEDWINDOW,
0, 0, 512, 384,
NULL, NULL, hInstance, NULL );
[...]
}

第二个示例创建一个对话框(除了 WinMain 参数外没有缩写):

int WINAPI WinMain( [...] )
{
// Create dialog box
DialogBox(hInstance,
MAKEINTRESOURCE(IDD_MAIN_DLG),
NULL,
(DLGPROC)DialogProc);
}

第二个示例不包含对注册函数的任何调用。它只是创建附加了 DialogProc 进程的 DialogBox。

这工作正常,但我想知道注册窗口类然后创建对话框是否有好处(如果这完全可能的话)。

最佳答案

您不必注册对话框。

对话框是预定义的,因此(如您所述)在创建对话框时没有对窗口类的引用。如果你想更多地控制一个对话框(就像你在创建自己的窗口类时得到的那样),你可以将对话框子类化,这是一种用你自己的方法替换对话框窗口过程的方法。当您的过程被调用时,您可以修改对话窗口的行为;然后,您可能会或可能不会调用原始窗口过程,具体取决于您要执行的操作。

关于c++ - 你必须注册一个对话框吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991/

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