为啥MFC的com组件函数要调用AFX_MANAGE_STATE(AfxGetAppModuleState())

为什么MFC的com组件函数要调用AFX_MANAGE_STATE(AfxGetAppModuleState())?
我建立一个MFC的对话框程序叫做MFCDlg,选择"支持从ProgID创建"。
然后操作接口IMFCDlg,增加一个函数Add,那么在DlgProxy.cpp里面这个实现的函数是:

LONG CMFCDlgDlgAutoProxy::Add(LONG n1, LONG n2)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());

// TODO: Add your dispatch handler code here
return n1+n2;
}

问题是,为什么一定要AFX_MANAGE_STATE(AfxGetAppModuleState());这样呢? 我用ATL建立com组件的时候添加函数并没有需要调用一个函数来做什么检查。为什么mfc要求要这样做?

谢谢。

------解决方案--------------------
这个语句跟COM无关,属于MFC DLL专用,只要是跨越模块边界进入MFC DLL程序内部,都需要首先调用这个语句。其实作用很简单,就是在主框架中设置DLL为当前模块句柄,在使用资源(比如创建对话框、读取位图等)时避免发生找不到资源的错误,如果不设置的话,可能在EXE等其他模块中寻找资源,当然会找不到。