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

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

不知怎么用CPtrList实现,存放这些指针,并且能够通过遍历指针队列得出(dlg->keyword)所需的对话框指针,以进行进一步的操作.
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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().

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧