AFX_DATA是什么意思?有什么用?

cl007 2002-04-12 03:32:31
是什么意思?
...全文
717 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2002-04-12
  • 打赏
  • 举报
回复
HOWTO: Use _declspec(dllexport) in an MFC Extension DLL

Q128199


--------------------------------------------------------------------------------
The information in this article applies to:

The Microsoft Foundation Classes (MFC), used with:
Microsoft Visual C++, 32-bit Editions, versions 2.0, 2.1, 4.0

--------------------------------------------------------------------------------

For example, the DECLARE_DYNAMIC macro is defined as follows when building an extension DLL:

#define DECLARE_DYNAMIC(class_name) \
protected: \
static CRuntimeClass* PASCAL _GetBaseClass(); \
public: \
static AFX_DATA CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \
The line that begins "static AFX_DATA" is declaring a static object inside of your class. To export this class correctly and access the run-time information from a client .EXE, you need to export this static object. Because the static object is declared with the modifier AFX_DATA, you only need to define AFX_DATA to be _declspec(dllexport) when building your DLL and define it as _declspec(dllimport) when building your client executable. As discussed above, AFX_EXT_CLASS is already defined in this way. So you just need to re-define AFX_DATA to be the same as AFX_EXT_CLASS around your class definition.

For example:

#undef AFX_DATA
#define AFX_DATA AFX_EXT_CLASS

class CExampleView : public CView
{

DECLARE_DYNAMIC()
// ... class definition ...

};

#undef AFX_DATA
#define AFX_DATA
MFC always uses the AFX_DATA symbol on data items it defines within its macros, so this technique will work for all such scenarios. For example it will work for DECLARE_MESSAGE_MAP.

NOTE: if you are exporting the entire class rather than selected members of the class, static data members are automatically exported.
Probe1_0 2002-04-12
  • 打赏
  • 举报
回复
ClassWizard and AppWizard insert specially formatted comment delimiters in your source code files to mark the places in your files that ClassWizard can write to. AFX_DATA is used to mark the beginning and end of member variable declarations in your header file (.H) used for dialog data exchange (DDX):

//{{AFX_DATA(classname)
...
//}}AFX_DATA

Probe1_0 2002-04-12
  • 打赏
  • 举报
回复
ClassWizard and AppWizard insert specially formatted comment delimiters in your source code files to mark the places in your files that ClassWizard can write to. AFX_DATA is used to mark the beginning and end of member variable declarations in your header file (.H) used for dialog data exchange (DDX):

//{{AFX_DATA(classname)
...
//}}AFX_DATA

kunjun_oy 2002-04-12
  • 打赏
  • 举报
回复
便于ClassWizard读写数据。

16,505

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧