如果我尝试将对话框从一个项目移动到另一个项目,是不是需要从 rc 文件中复制 DESIGNINFO、对话框信息和 AFX_DIALOG_LAYOUT 相关代码?
Posted
技术标签:
【中文标题】如果我尝试将对话框从一个项目移动到另一个项目,是不是需要从 rc 文件中复制 DESIGNINFO、对话框信息和 AFX_DIALOG_LAYOUT 相关代码?【英文标题】:Do I need to copy DESIGNINFO, Dialog Info and AFX_DIALOG_LAYOUT related code from rc file if I try to move a dialog from one project to another?如果我尝试将对话框从一个项目移动到另一个项目,是否需要从 rc 文件中复制 DESIGNINFO、对话框信息和 AFX_DIALOG_LAYOUT 相关代码? 【发布时间】:2018-03-23 02:23:32 【问题描述】:我正在处理一个 MFC VS2013 项目,尝试将一些对话框从一个项目移动到另一个项目。我的以下步骤是:
找到此对话资源 ID(例如 IDD_DIALOG1)
在项目名称.rc 文件中搜索此 ID
将相关代码复制到目标project.rc文件中
将相关的 *.h 和 *.cpp 文件复制到目标项目
现在我的问题是,当我搜索 projectname.rc 文件时。实际上我在这个文件中找到了几个与这个 ID 相关的地方。我需要将所有这些位置移动到新的资源文件吗?还是我只需要移动 location1 的代码? location2,3,4是什么意思?
//Location1:
//
// Dialog
//
IDD_DIALOG1 DIALOGEX 0, 0, 239, 190
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Settings"
FONT 9, "Tahoma", 0, 0, 0x0
BEGIN
CONTROL " Default to Use",IDC_CHECK_USE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,6,222,8
GROUPBOX "Test2",IDC_STATIC,6,18,228,48,NOT WS_VISIBLE
LTEXT "Test1:",IDC_STATIC,12,32,132,8
EDITTEXT IDC_GES_EDIT_PROC_INTERVAL,150,30,78,12,ES_AUTOHSCROLL | WS_GROUP
......
END
//Location2:
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_DIALOG1, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 231
TOPMARGIN, 7
BOTTOMMARGIN, 186
END
END
#endif // APSTUDIO_INVOKED
//Location3:
//
// Dialog Info
//
IDD_DIALOG1 DLGINIT
BEGIN
IDC_GDD_COMBO_ANGLE, 0x403, 5, 0
0x6f4e, 0x656e, "\000"
...
0
END
//Location4:
//
// AFX_DIALOG_LAYOUT
//
IDD_DIALOG1 AFX_DIALOG_LAYOUT
BEGIN
0x0000
END
【问题讨论】:
#ifdef APSTUDIO_INVOKED
-- 我不建议尝试使用 APP studio 创建的资源文件并手动编辑或模仿它。
Visual Studio 的资源编辑器可以重新生成DESIGNINFO
信息,不需要复制。我认为棘手的部分是复制 ID。 VS 喜欢自己创建资源 ID,它使用 _APS_NEXT_RESOURCE_VALUE
等其他值来跟踪。如果发生不可逆转的故障,您应该制作备份副本。
【参考方案1】:
您需要复制除 DESIGNINFO 之外的所有内容(意思是:所有其他内容都是必需的,DESIGNINFO 可能有用)。这些信息只是为资源定义的帮助线和边距。它们没有被编译并且在运行时不需要。它们在设计时很有帮助。
将资源从一个资源复制到另一个资源的最简单方法是在同一个 Visual Studio 会话中打开两个 rc 文件。然后选择一个对话框复制并粘贴到第二个 RC 文件中。这将复制您需要的所有内容,包括所需的 ID。
【讨论】:
值得注意的是,DESIGNINFO
(可选)可以被复制,这样您就可以在新项目的资源编辑器中获得相同的设计时体验。在这种特殊情况下,它仅包含默认对话框边距,这有助于创建外观一致的 UI。
改变了我的答案以上是关于如果我尝试将对话框从一个项目移动到另一个项目,是不是需要从 rc 文件中复制 DESIGNINFO、对话框信息和 AFX_DIALOG_LAYOUT 相关代码?的主要内容,如果未能解决你的问题,请参考以下文章
将 Google Cloud Platform 项目从一个帐户移动到另一个帐户
将 android 项目从 pc 移动到另一个,Firebase Auth 问题? [复制]