0

DDX 技术的创建是为了将资源与类成员(例如)链接起来。在我的解决方案中,我需要在 myCCtreeCtrl(CCtreeCtrl 的实例)与类成员 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 个 CCtreeCtrls,每个人都住在自己的酒吧里。他们之间没有什么不同。这就是为什么我想使用 1 个条形类和 1 个树而不是冗余。在我创建 3 个 bar 实例之后,这里出现了 DDX 的问题,它在这里不起作用。

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

4

1 回答 1

1

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

于 2012-05-19T03:55:45.550 回答