西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页西西教程软件使用 → MFC里面的PropertySheet使用

MFC里面的PropertySheet使用

相关软件相关文章发表评论 来源:本站原创时间:2010/4/6 21:18:44字体大小:A-A+

作者:不详点击:371次评论:0次标签: MFC

  • 类型:一体机驱动大小:41.2M语言:中文 评分:3.6
  • 标签:
立即下载

我是一个问题少年,之前买过一本” Programming Windows”,上册看过一些,大约知道Win32程序怎么写,怎么工作的.来到新公司,我就准备用Programming Windows里面那种Sample那种形式写程序.

老天就喜欢和我开玩笑,普通的控件的消息响应之类还比较好处理(无非就是那个Switch…case…比较大而已),可以Leader偏偏决定用PropertySheet控件(一复杂控件).用Win32 API对于刚写Native代码的我(到现在写了一个星期)简直就是一个不可能完成的任务.让写一个小程序,后台那些东西我两天就搞定,单单这个PropertySheet我两天都没搞定.

后来看到WTL里面直接可以创建PropertySheet,可是被告知,不允许使用WTL……无奈,只能转投MFC,人生第一次使用MFC……

废话少说,直接说得到的PropertySheet相关的经验.

CPropertySheet和CPropertyPage是两个基类,通常你不需要继承这两个类,不过需要个性化的需求,就需要继承这两个类了.

首先说明,Page类其实就是一个Dialog,里面响应了Notify消息,可以拿到SetActive,KillActive两种比较重要的消息,里面可以做很多个性化的东西;

Sheet类是一个封装类,用来管理Page,例如可以拿到现在有多少个Page,获取当前Active的Page,设置第几个Page为Active等等,更重要的是,他还可以动态的Add , Remove Page.下面讲怎么动态添加删除Page.

假设有CMyPropertySheet和CMyPropertyPage,分别继承自上面那两个类.

CMyPropertySheet里面添加一个成员:

std::vector<CMyPropertyPage*> _PropertyPageCache;

成员RefreshPages来实现动态添加删除Page,只是提供一个简单的Demo,剩下的自由发挥.


view sourceprint?01 void RefreshPages()

02

03 {

04

05 int pageCount= this->GetPageCount();

06

07 int insertCount=5;

08

09 for (int i=0;i<_PropertyPageCache.size();i++)

10

11 {

12

13 delete _PropertyPageCache[i];

14

15 }

16

17 _PropertyPageCache.clear();

18

19 for (int i=0;i<insertCount;i++)

20

21 {

22

23 CMyPropertyPage* page= new CMyPropertyPage;

24

25 page->Construct(IDD_MYDIALOG);

26

27 page->m_psp.pszTitle=L”Demo”;

28

29 page->m_psp.dwFlags|=PSP_USETITLE;

30

31 this->AddPage(page);

32

33 _PropertyPageCache.push_back(page);

34

35 }

36

37 for (int i = 0;i<pageCount;i++)

38

39 {

40

41 this->RemovePage(0);

42

43 }

44

45 }


 

Remove可以(最好)在后面完成,因为如果删完了的话,CMyPropertySheet会直接跳出消息循环……

 

OK,现在你的PropertySheet就能完成动态增删的功能,剩下的就是看你想在什么地方动态增删Page了,哪里需要,就把this指针给谁~~简单吧

 

PS:

曾经试过如果不cache这些Page的话,PropertySheet也创建了,但是Page的Title都不对,而且点击都会崩溃,因为我也没研究过怎么具体使用Win32来完成这个功能(对底层不了解),不过根据这几天写Native Code经验判断,是所谓的野指针,访问的内存地址不对.

因为我之前是一个C#.NET程序员,所以对内存访问(控制)有一点不了解,在这上面磕磕绊绊很多次,所以我直接去用自由存储,结果发现解决这个问题……歪打正着吧……

    兄弟打印机驱动
    (52)兄弟打印机驱动
    兄弟打印机是国际知名的打印机品牌,国内很多企业办公都会选择兄弟旗下的办公打印设备。虽然大家在购买打印机的时候都有随机附赠的驱动光盘,不过很多人在使用了一段时间后就会把光盘弄丢了,这里西西给大家提供了一些兄弟打印机驱动下载,这里包含了大家常见的兄弟热门打印机型号,大家可以来西西找到自己需要的打印机驱动。...更多>>
    视频编辑软件
    (145)视频编辑软件
    视频编辑软件其实是对图片视频音频等素材进行重组编码工作的多媒体软件。重组编码是将图片视频音频等素材进行线性编辑后,根据视频编码规范进行重新编码,转换成新的格式,比如格式,这样图片视频音频无法被重新提取出来,因为已经转化为新的视频格式,发生质的变化。视频编辑软件的另一个重要技术特征在于,除了具有图片转视频的技术,优秀专业的视频编辑软件,还需具有为原始图片添加各种多媒体素材,实现制作出的视频图文并茂的...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)