创建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或其他东西。无论如何,谢谢你的帮助。
答案 0 :(得分:1)
如果未从对话框资源自动生成控件,则必须使用Create
方法创建它。您需要在OnInitDialog
或父窗口中的等效内容中执行此操作。通过使用Create
创建窗口,它将自动连接到您创建它的对象 - 无需DDX_Control。