gpt4 book ai didi

c++ - 如何在 Win32 中使用对话框资源?

转载 作者:可可西里 更新时间:2023-11-01 13:30:29 26 4
gpt4 key购买 nike

在没有资源的情况下,我可以使用复杂的 CreateWindow()CreateWindowEx() 数组以及 WndProc() 来创建我的 UI 来处理我的事件。

我注意到如果我在资源 View 中右键单击并单击“添加资源”,我可以绘制一个包含所有控件的对话框。如果我可以像通常使用 C# 那样绘制界面,这将为我节省大量时间。

在使用资源编辑器绘制界面后,如何从代码创建窗口?有人可以提供一个带有按钮的非常简单的示例,并展示如何处理该按钮上的 WM_COMMAND 事件吗?

此外,这通常是人们创建 GUI 的方式吗?这样做在灵 active 上有什么损失吗?即使在 C# 中,我也经常需要用我自己的代码生成的 UI 来补充设计器生成的 UI,但大多数时候我很乐意使用设计器。

最佳答案

在资源编辑器中创建对话框后,调用CreateDialog(无模式对话框;您需要像使用CreateWindow一样手动发送消息)或 DialogBox(模态对话框;该函数在您关闭对话框之前不会返回。它会为您进行调度)以显示对话框。就像将窗口过程传递给 RegisterClass 一样,将对话框过程传递给那些用于对话框回调的函数。 DialogProc 的示例如下所示:

BOOL DialogProc( HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam ){
switch( iMessage ){
case WM_COMMAND:
switch( LOWORD( wParam ) ){
case BTOK:
MessageBox( hDlg, "Hello, World!", NULL, NULL );
return TRUE;
break;
}
break;
}
return FALSE;
}

这是创建对话框的基本方法。更复杂的方法通常会涉及 OOP,通常将每个资源(按钮、窗口等)包装为 C++ 对象或使用 MFC。

关于c++ - 如何在 Win32 中使用对话框资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177256/

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