什么是私有MFC,为什么它们无法通过普通接口访问?

我正在使用MFC进行gui开发,我偶然发现了一个可能对我正在尝试做的事情有用的函数。该函数是_AfxCompareClassName。但是,它包含在文件“afximpl.h”中,该文件位于“VC / altmfc / src / mfc / afximpl.h”目录中。正常的mfc包含在目录“VC / atlmfc / include”中。 现在从我收集的内容中,src / mfc中的文件和函数被认为是私有mfc(根据这个人),我不应该使用它们。为什么?这个功能看起来不错。它会帮助我知道我目前在UI中的位置。 最终我想要做的是在编辑文本字段(编辑控件)时更改转义/返回键行为。我的问题如下: 什么是私人MFC功能? 为什么我不应该使用这些功能(从我收集的内容中他们经常更改,所以这就是为什么我不应该使用它们。还有其他原因吗?) 有没有更清洁的方式来做我想做的事情? 我虽然得到一些关于私人MFC的信息很好,因为到目前为止似乎没有任何关于私有MFC的信息。 非常感谢, JC     
已邀请:
'私有'MFC文件是MFC的实现细节。正如您不希望或期望您的类的用户访问private:data或方法一样,您不应该依赖MFC实现级实用程序代码。请注意,在MFC实现细节中可以找到的几乎任何很酷的东西都可以公开获取 - 某处。你只需要挖掘。 MFC中有内置功能,可以满足您的需求。它叫做RUNTIME_CLASS,这里是MSDN的示例代码:
// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );
    
它是“私有的”,因为它位于源树而不是外部包含文件夹中。 您不应该使用这些文件中定义的函数,因为它们是MFC实现的内部函数,并且很可能会更改。 如果你真的需要这些功能,你可以复制代码(有足够的属性)并将其放入你的一个类中,尽管这远非理想。我也重命名了这个功能。     

要回复问题请先登录注册