c++ - 寻求 DDX 的替代品

标签 c++ winapi visual-c++ mfc

DDX 技术是为将资源与类成员链接起来而创建的(例如)。在我的解决方案中,我需要在不存在于类成员 CCtreeCtrl 的资源中的 myCCtreeCtrl(CCtreeCtrl 实例)之间建立连接。 现在我在资源中有了 CTreeCtrl 和简单的 doDataExchange:

#define IDC_TREE_LAYER0                 2000   
#define IDC_TREE_LAYER1                 2001
#define IDC_TREE_LAYER2                 2002


// ============================================================================
void ForcesGUI::doDataExchange( int id0, int id1, int id2, CDataExchange* pDX )
// ============================================================================
{
   DDX_Control(pDX, id0, m_tree[0].data);
   DDX_Control(pDX, id1, m_tree[1].data);
   DDX_Control(pDX, id2, m_tree[2].data);
}

但将来需要从资源中删除CCtreeCtrl并创建实例。

你会问我为什么需要从资源中删除?

答案是:在项目中我有 3 个 CCtreeCtrl,每个都在他自己的栏上。他们之间没有什么不同。这就是为什么我想使用 1 个带有 1 棵树的 bar 类而不是冗余。在我创建 3 个 bar 实例之后,这里出现了 DDX 问题,但在这里不起作用。

您有什么想法可以替换基本的 DDX 吗?可能是 WinAPI 或其他东西。无论如何感谢您的帮助。

最佳答案

如果控件不是从对话框资源自动生成的,则必须使用 Create 创建它方法。您需要在 OnInitDialog 或父窗口中的任何等效项中执行此操作。通过使用 Create 创建窗口,它将自动连接到您创建它的对象 - 不需要 DDX_Control。

关于c++ - 寻求 DDX 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659626/

相关文章:

c++ - 当前路径的 loadlibrary 失败,GetLastError() == 0

c++ - 将 C++ 代码从 VS2003 迁移到 VS2010 后出现错误 C2678,错误 C2679 : binary '=' : no operator found which takes a right-hand operand of type 'int'

c++ - 将类的方法作为 friend

c++ - 有人如何使用第三方库将其包含在 Firefox 插件/扩展中?

windows - Windows 如何保护过渡到内核模式?

c++ - 在Window中根据盘符查找USB Mass Storage Instance Id

c++ - 生成 CHM 文件的库

C++ 模板运算符重载不起作用

visual-c++ - 如何将 float 打印到 Visual C++ 消息框?

c++ - 歧义时的类型名解析