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