寻求DDX的替代品

时间:2012-05-18 20:55:47

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

创建DDX技术是为了将资源与类成员链接(例如)。在我的解决方案中,我需要使myCCtreeCtrl(CCtreeCtrl的瞬间)之间的连接不与类成员CCtreeCtrl一起生活在资源中。 现在我在resouces和silmple doDataExchange中有CTreeCtrl:

#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个bar类,其中包含1个树而不是冗余。在我创建3个bar实例之后,这里出现DDX问题,这里不起作用。

您有什么想法我如何更换基本的DDX?可能是WinAPI或其他东西。无论如何,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

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