在多个对话框中显示和使用相同的MFC CList控件

时间:2016-05-30 05:40:32

标签: c++ visual-studio-2008 mfc modal-dialog clistctrl

我正在编写Windows CE设备的测试应用程序。这是我第一次为手持设备编程。我在Visual Studio 2008上使用MFC VC ++。我发现控件中存在许多限制,当我在桌面计算机上运行类似程序时,我可以使用它们来处理程序。

现在,我正在部署我的测试程序的设备,没有触摸屏,并且除了数字键盘0-9键之外几乎没有额外的键。因此,我必须使用一个简单的GUI,它使用keydowns来调用特定的函数,如添加,编辑,删除等......它还迫使我为每个函数使用单独的对话框,以避免不必要的鼠标光标使用。 / p>

这引出了我当前的问题:' ADD'我的测试应用程序的对话框将一些用户数据添加到主页上的上的 对话框即可。 编辑/删除'对话框是允许用户从自己的CListCtrl 中选择所需的数据,然后按" ENTER"密钥,从而从“主要”'删除所选数据对话框的CListCtrl 。因此,主要对话框和编辑/删除'对话框中的CListCtrl具有完全相同的数据。因此,不是必须使用2个单独的列表控件并使用循环来复制它们之间的数据,有没有一种方法可以使用完全相同的CListCtrl(只有一个CListCtrl实例存在),但是在2个单独的对话框中显示它?这将删除所有复制代码,并将内存中的数据量减半。

我尝试将指向MAIN对话框的CListCtrl的指针传递给编辑/删除'对话,希望我可以重新绘制控件,但是徒劳无功。我可以调用RedrawWindow,RedrawItems命令,但它们似乎对编辑/删除'对话框(我认为这是因为编辑/删除对话框中没有控件本身)。还有其他建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用CWnd::SetParent暂时将ListCtrl的父级更改为EDIT / DELETE对话框,并将CWnd::SetWindowPos的位置设置为您想要的位置。关闭对话框后,将父级设置回MAIN对话框。