对话框问题,猛将往这里看呀!

hamh 2002-11-04 04:08:36
要求:实现对话框指针的存储和使用.根据控制生成对话框,所有生成的对话框都基于同一个类(CMyDlg* dlg;dlg= new CMyDlg;),根据类中的一个字符串变量来区分每个对话框的指针(dlg->keyword).

不知怎么用CPtrList实现,存放这些指针,并且能够通过遍历指针队列得出(dlg->keyword)所需的对话框指针,以进行进一步的操作.
...全文
23 点赞 收藏 5
写回复
5 条回复
hamh 2002年11月05日
猛将们,帮想想吧!
留下邮箱,我可以发源码过去。
谢谢!
回复 点赞
hamh 2002年11月05日
dominolili(domino) :
但是用这个方法插入CPtrList的pDlg->keywor都为最后插入的一个的值,所以遍历后无法找出之前插入的pDlg.
回复 点赞
ruihuahan 2002年11月04日
gz
回复 点赞
knight_temp 2002年11月04日
在 MFC 中实现我没有试过,我想可以实现,但是比较麻烦。
你可以直接用 对话框函数 API 来生成对话框实例,用一个回凋函数,
为多个对话框资源提供功能,在生成对话框资源的时候,你只需要指定回凋函数,
对话框资源ID 就可以了,但你说的“CPtrList实现”就需要你自己写对话框类了。刚才我说的方法我实现过,对多语言版本的时候,一个回凋函数,当中文的时候显示中文窗体,英文显示英文窗体。
回复 点赞
dominolili 2002年11月04日
假设你有三个对话框,需要放到list中:

先需要定义成员变量:CPtrList m_PtrList;

//压入指针
for(int i = 0; i < 3; i++)
{
CMyDlg* pDlg = NULL;
pDlg= new CMyDlg;
switch(i)
{
case 0:
pDlg->keyword = ...;
break;
...
}
m_PtrList.AddHead(pDlg);
}

用CPtrList的GetAt可以访问每个单元的指针,不过如果指针够多,建议你用其他的STL容器来装载这些指针,可以使find效率更高;
最后,注意在程序推出(析构)时先遍历m_PtrList的每个元素,delete之,然后调用m_PtrList.RemoveAll().

回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7895

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告