c++ - 移动MFC项目对话框的方法

标签 c++ visual-c++ mfc

我已经对一个版本的 MFC 基本代码进行了一些更改,但现在我想将其中的一部分(包括一些对话框)复制到另一个项目中。可以将对话框原样复制到新的 MFC 项目中。但我找不到任何与 cpp 上的对话框相关的文件,头文件也在那里。请让我知道有没有一种方法可以将对话框从一个 MFC 项目复制到另一个项目

谢谢

最佳答案

您可能正在寻找的是自动生成和处理的资源文件,如 resource.h、resource.rc 和 friend 。您可以在这里阅读更多关于它们的信息:How to: Copy Resources更多一般在这里 Resource Files (Visual Studio) .

虽然可以在 Visual Studios 的资源 View 中打开这些文件,但它们也可以作为文本打开和查看;即使在 Visual Studio 中,只要资源 View 当前未打开,但 VS 会告诉您是否是这种情况。

现在 MFC 对话框通过一个名为 IDD 的枚举来引用它们使用的对话框模板资源,该枚举在对话框的头文件 f.e. 中定义

class CTest : public CDialog { /*...*/  enum { IDD = IDD_TEST_DIALOG }; }

所以几乎所有您可能需要做的就是搜索指定的资源 ID,在/one .rc 文件中查找并将需要的部分(标题 + 从 BEGIN 到 END 的所有内容)复制到您的新项目. 然后,作为第二步,您需要为该对话框中使用的所有资源 ID 定义唯一值(但不是像 IDOK 这样的常见资源 ID)。这通常在 resource.h 中完成:

#define IDD_TEST_DIALOG               142

因此您必须将特定对话框中使用的所有定义也复制到目标 resource.h 中,并确保没有重复的数字。 另请记住,可能存在多个包含资源的文件,有些可能是其他项目的一部分 resource only dll's f.e. .

关于c++ - 移动MFC项目对话框的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748899/

相关文章:

c++ - C++ 库的 Windows 包管理器

c++ - 如何从参数列表中推断出函数对象的返回类型?

multithreading - C++ 11线程更新MFC应用程序窗口。需要SendMessage(),PostMessage()吗?

c++ - 错误 C3861 : 'rollDice' : identifier not found

c++ - 只需添加什么都不做的析构函数会导致编译错误(围绕 std::move),为什么?

c++ - 泰勒级数在 sin(90) 和 cos(120) 之后得到 nan

c++ - 子进程退出状态的含义

c++ - 如何让 ToolTip 出现在 float 的 CPaneDialog 的最前面?

multithreading - VC++中终止线程

c++ - 关于从 CRgn 对象中提取点的查询