1

我正在使用 MFC 进行 gui 开发,我偶然发现了一个可能对我正在尝试做的事情有用的功能。该函数是_AfxCompareClassName。但是,它包含在位于目录“VC/altmfc/ src/mfc /afximpl.h”中的文件“afximpl.h”中。正常的 mfc 包含在目录“VC/atlmfc/ include ”中。

现在,根据我收集的内容,位于 src/mfc 中的那些文件和函数被认为是私有 mfc(根据这个家伙),我不应该使用它们。为什么 ?这个功能看起来不错。这将帮助我知道我目前在 UI 中的哪个位置。

最终我想做的是在编辑文本字段(编辑控件)时更改转义/返回键的行为。我的问题如下:

  • 什么是私有 MFC 功能?
  • 为什么我不应该使用这些功能(根据我收集的信息,它们经常变化,所以这就是为什么我不应该使用它们。还有其他原因吗?)
  • 有没有更清洁的方法来做我想做的事情?

我虽然很高兴获得一些关于私人 MFC 的信息,因为到目前为止似乎还没有任何关于私人 MFC 的信息。

非常感谢,JC

4

2 回答 2

5

'private' MFC 文件是 MFC 的实现细节。正如您不希望或期望您的类的用户获得私有数据或方法一样,您不应该依赖 MFC 实现级实用程序代码。请注意,您可以在 MFC 实现细节中找到的几乎所有很酷的东西都是公开的——在某个地方。你只需要挖掘。

MFC 中有内置功能可以满足您的需求。它被称为RUNTIME_CLASS,这是来自 MSDN 的示例代码:

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );
于 2010-01-11T21:23:36.670 回答
2

它是“私有的”,因为它位于源树而不是外部包含文件夹中。

您不应使用这些文件中定义的函数,因为它们是 MFC 实现的内部函数,并且很可能会发生变化。

如果您确实需要该功能,您可以复制代码(具有足够的属性)并将其放入您的一个类中,尽管这远非理想。我也会重命名该函数。

于 2010-01-11T21:20:33.587 回答