永发信息网

初学MFC的一个问题

答案:2  悬赏:20  手机版
解决时间 2021-06-01 16:44
我在我的程序中基于CListCtrl派生了一个类,并且添加了一个成员函数,这个成员函数要求调用设置主界面对话框的标题,如果在对话框类中设置,我可以用this->SetWindowText(xxxx),但是在其他的类中该怎么设置呢?另外,如果我想在CListCtrl类中调用CMyDlg类中的消息映射函数,可不可以把该函数声明成public的?
最佳答案

很多方法,我只说最简单的。
1.设置主界面对话框的标题:
答:GetParent->SetWindowText("设置父窗口标题");
2.另外,如果我想在CListCtrl类中调用CMyDlg类中的消息映射函数,可不可以把该函数声明成public的? 例如,我想在 CListCtrl类中调用CMyDlg的OnPaint函数。


答:你的想法,某些情况下可以,但一般不这样做。例如,处理父窗口的OnPaint消息,一般处理OnPaint消息是通过发送WM_PAINT或使客户区无效来实现的。


原因一:因为OnPaint消息是一般是由操作系统调用的,系统会帮你自动计算填写调用的参数,如计算无效客户区大小的PAINTSTRUCT结构;原因二:如果是作画图操作,单单处理OnPaint消息,就不会刷新背景,而使画面很“脏”。


而我说某些情况下可以,比如处理用户按钮,因为处理函数没有调用参数,所以有时候可以直接调用。


一般处理OnPaint消息是通过发送WM_PAINT或使客户区无效来实现的:
1.
::SendMessage(GetParent()->m_hWnd,WM_PAINT,0,0);
2.
::InvalidateRect(GetParent()->m_hWnd,NULL,TRUE);

全部回答

1、在其他类设置主界面对话框标题,可以通过指定主窗口句柄来实现: SetWindowText(this->m_hWnd, "******");   

2、在别的类调对话框类的消息映射函数,这个过程肯定伴随着数据传递,是吧?一般这种情况通过MFC的“文档视图”结构来实现:在CListCtrl类中把数据传到文档类,然后在文档类里面通知窗口类重绘窗口。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么地下城会封号?
怎么用电信手机开通QQ会员 黄钻 绿钻 红钻等
我买的鱼缸喂鱼,怎么今天买回来的鱼明天都死
2009国民网游《龙》 收费吗?
你们觉得友情重要还是感情重要?
快男陈翔被淘汰了,大家有什么华讲呢?
小孩穿带有纤维的衣服对皮肤有没有伤害?
一般电脑要什么配置才能玩大型官方游戏?
什么是主观什么是客观?两者有什么区别?
日本带回来的卷发棒一定要插上变压器才可以用
梦幻诛仙巫山教怎么加点?
咋子正确的使用测线仪?
求一手机阅读软件
男友就要过生日了,该送什么礼物给他比较好?
轻快愉快的英文歌
推荐资讯
邮政快递包裹查询KA17175253644到了哪里?
梅州时空11月有什么活动吗?
铁路运输票据怎么申报? 怎么录?谢谢大家~
口香糖搞到衣服上怎么洗的掉
修一条路,三天正好修了全场的五分之二,如果
最近有什么好歌听么?`
Rapoo雷柏 3200 和Rapoo雷柏 7600有什么区别
有什么好看的电视剧偶像的
天增岁月人曾寿,春满乾坤福满门 指什么节日
你知不知道 为什么自己可以进自己的空间,而
龙之谷称号“神一样的XXX”,有什么效果,是
怎样吸引幼儿园小班小朋友的注意力?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?