C++ 如果我尝试将对话框从一个项目移动到另一个项目,是否需要从rc文件复制设计信息、对话框信息和AFX_对话框_布局相关代码?
我正在处理一个MFC VS2013项目,尝试将一些对话框从一个项目移动到另一个项目。我的以下步骤是: 查找此对话框资源ID(例如IDD_DIALOG1) 在project name.rc文件中搜索此ID 将相关代码复制到目标project.rc文件 将相关的*.h和*.cpp文件复制到目标项目 现在我的问题是,当我搜索projectname.rc文件时。实际上,我在这个文件中找到了几个与这个ID相关的位置。我需要将所有这些位置移动到新的资源文件中吗?或者我只需要移动位置1的代码? 位置2、3和4的含义是什么C++ 如果我尝试将对话框从一个项目移动到另一个项目,是否需要从rc文件复制设计信息、对话框信息和AFX_对话框_布局相关代码?,c++,mfc,C++,Mfc,我正在处理一个MFC VS2013项目,尝试将一些对话框从一个项目移动到另一个项目。我的以下步骤是: 查找此对话框资源ID(例如IDD_DIALOG1) 在project name.rc文件中搜索此ID 将相关代码复制到目标project.rc文件 将相关的*.h和*.cpp文件复制到目标项目 现在我的问题是,当我搜索projectname.rc文件时。实际上,我在这个文件中找到了几个与这个ID相关的位置。我需要将所有这些位置移动到新的资源文件中吗?或者我只需要移动位置1的代码? 位置2、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
您需要复制除设计信息外的所有信息(即:所有其他信息都是必需的,设计信息可能有用)。这些信息只是为资源定义的帮助行和边距。它们不是编译的,在运行时也不需要。它们在设计时很有用
将资源从一个资源复制到另一个资源的最简单方法是在同一个VisualStudio会话中打开两个rc文件。然后选择一个对话框“复制并粘贴到第二个RC文件”。这将复制您需要的所有内容,包括所需的ID
\ifdef APSTUDIO\u已调用
——我不建议尝试获取APP studio创建的资源文件并手动编辑或模拟它。Visual studio的资源编辑器可以重新生成设计信息
信息,您无需复制它。我认为最棘手的是复制身份证。VS喜欢自己创建资源ID,它使用其他值,如\u APS\u NEXT\u resource\u VALUE
来跟踪。在发生不可逆转的故障时,您应该进行备份。值得注意的是,可以复制设计信息
(可选),以便您在新项目的资源编辑器中获得相同的设计时体验。在这种情况下,它只包含默认的对话框边距,这有助于创建外观一致的UI。更改了我的答案