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/