VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 503|回复: 3

[交流] VC++中派生类对虚函数的继承关系

[复制链接]
12_avatar_middle
最佳答案
0 
在线会员 发表于 2020-2-23 09:22:49 | 显示全部楼层 |阅读模式
我在工程中,需要用到很多对话框。 需要实现PreTranslateMessage,从而按下回车键后, 对话框不会退出。 由于对话框太多了,每次都做要重写这个函数, 不是太好。 就基于CDialogEx 派生了一个类CEasyAPIDlg ,在CEasyAPIDlg中实现了PreTranslateMessage 。然后让所有的对话框都派生CEasyAPIDlg。  我期望所有的对话框都能执行CEasyAPIDlg中的PreTranslateMessage ,但是实际执行,发现没有调用CEasyAPIDlg中的PreTranslateMessage。  

概括一下,有3个类。 A是基类, B是A的派生类,C是B的派生类。 A,中有PreTranslateMessage 虚函数, B中实现了。 想C中使用B中的PreTranslateMessage  。目前是,没有调用B中的PreTranslateMessage 。

求大牛指点, 多谢,多谢!




上一篇:MFC新手求助
下一篇:我想要和版主大神一样的MSDN
12_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-23 09:25:40 | 显示全部楼层
我怀疑这个跟MFC的框架有些关联,就是基于基类创建的框架
12_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-23 10:10:32 | 显示全部楼层
后来发现是可以的, 由于对话框很多,我把其他对话框的基类修改了,测试的是另外一个基于CDialogEx的对话框。 结论是, C中的虚函数是B中实现的。
51_avatar_middle
最佳答案
90 
online_admins 发表于 2020-2-23 11:53:48 | 显示全部楼层
按回车对话框退出一般有两种情况,可能是对话框窗口上有默认的“确定”按钮,按了回车之后会导致对话框退出,另外一个就是有编辑框控件,如果当前焦点在编辑框上,而且编辑框还没有 Multiline 多行属性的话,按回车也会导致对话框退出。

之前我就感觉为了屏蔽一个回车键去重写 PreTranslateMessage 函数有点不值得。后来我发现几个办法:
楼主如果对话框上有确定或关闭按钮可以不让其是默认按钮选项,即,确定按钮的 Default Button 属性设置为 False,这样按回车键就不会触发按钮被点击了。另外一个,如果对话框上面的编辑框没有 Multiline 多行属性,这时候按回车还会退出,所以此时就可以将对话框上面另外一个除了“确定”按钮以外的按钮,比如业务开始之类的,设置 Default Button 属性,这样就可以解决这个问题。

如果楼主还有其他情况,那么估计就只能在 PreTranslateMessage 虚函数中处理了。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-3-23 14:03

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表