我正在使用MFC进行GUI开发,并且偶然发现了一个可能对我想做的事情有用的功能。该函数为_AFXCOMPARECLASSNAME。但是,它包含在位于目录中的文件“ afximpl.h”中。SRC/MFC/afximpl.h“。正常的MFC包含在目录中” VC/ATLMFC/包括".

现在,我收集的这些文件和功能位于SRC/MFC中被视为私有MFC(根据这个家伙),我不应该使用它们。为什么 ?此功能看起来确实不错。这将帮助我知道我目前在UI中的位置。

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

  • 什么是私人MFC功能?
  • 为什么我不应该使用这些功能(从我收集的内容经常变化,所以这就是为什么我不应该使用它们。还有其他原因吗?)
  • 有没有更干净的方法来做我想做的事?

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

非常感谢,JC

有帮助吗?

解决方案

“私人” MFC文件是MFC的实现详细信息。就像您不希望或期望类用户可以通过私有:数据或方法一样,您也不应该依靠MFC实现级实用程序代码。请注意,在MFC实施详细信息中几乎可以在某处公开获得任何酷炫的东西。您只需要挖掘即可。

MFC中有内置功能可以实现您想要的。叫做 RUNTIME_CLASS, ,这是MSDN的示例代码:

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top