初学MFC的一个问题
答案:2 悬赏:20 手机版
解决时间 2021-06-01 16:44
- 提问者网友:几叶到寒
- 2021-06-01 04:44
我在我的程序中基于CListCtrl派生了一个类,并且添加了一个成员函数,这个成员函数要求调用设置主界面对话框的标题,如果在对话框类中设置,我可以用this->SetWindowText(xxxx),但是在其他的类中该怎么设置呢?另外,如果我想在CListCtrl类中调用CMyDlg类中的消息映射函数,可不可以把该函数声明成public的?
最佳答案
- 五星知识达人网友:玩世
- 2021-06-01 05:12
很多方法,我只说最简单的。
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楼网友:舍身薄凉客
- 2021-06-01 05:44
1、在其他类设置主界面对话框标题,可以通过指定主窗口句柄来实现: SetWindowText(this->m_hWnd, "******");
2、在别的类调对话框类的消息映射函数,这个过程肯定伴随着数据传递,是吧?一般这种情况通过MFC的“文档视图”结构来实现:在CListCtrl类中把数据传到文档类,然后在文档类里面通知窗口类重绘窗口。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯