我在ATL类中声明了一个对话框变量,但是在该类的函数中调用显示函数就出错!!
但是在该函数中声明变量,然后在调用显示就没问题!!
代码如下:class ATL_NO_VTABLE CCommFace :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCommFace, &CLSID_CommFace>,
public IDispatchImpl<ICommFace, &IID_ICommFace, &LIBID_DLLCOMMLib>
{
public:
CCommFace()
{
}DECLARE_REGISTRY_RESOURCEID(IDR_COMMFACE)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CCommFace)
COM_INTERFACE_ENTRY(ICommFace)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()// ICommFace
public:
MyDialog Dialog;
STDMETHOD(Disp)();
};
STDMETHODIMP CCommFace::Disp()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here
MyDialog lg;
lg.DoModal();
//当执行到这里没事,接下来就出错了
Dialog.DoModal(); return S_OK;
}
但是在该函数中声明变量,然后在调用显示就没问题!!
代码如下:class ATL_NO_VTABLE CCommFace :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCommFace, &CLSID_CommFace>,
public IDispatchImpl<ICommFace, &IID_ICommFace, &LIBID_DLLCOMMLib>
{
public:
CCommFace()
{
}DECLARE_REGISTRY_RESOURCEID(IDR_COMMFACE)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CCommFace)
COM_INTERFACE_ENTRY(ICommFace)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()// ICommFace
public:
MyDialog Dialog;
STDMETHOD(Disp)();
};
STDMETHODIMP CCommFace::Disp()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here
MyDialog lg;
lg.DoModal();
//当执行到这里没事,接下来就出错了
Dialog.DoModal(); return S_OK;
}
解决方案 »
- 完成端口GetQueuedCompletionStatus的问题?
- void func(int a)和void func(int &a)有何区别?
- 用ODBC API获取SELECL语句返回记录集的行数疑问
- 求助树控件....
- 电子版c++编程思想
- 新手求助(在线等)
- 我很疑惑:Delete(adAffectCurrent)后,光标会在哪?
- 不上不下的问题:聚焦后的控件如何在VIEW中得到完整的“身材展现”?
- 自定义的IDownloadManager下载接口的问题?
- 奇怪问题,我做了一个小的练习工程,在局域网上共享了一下,文件夹里多出来了一个.idl文件。这是什么东西。我删了还不行。
- 设置定时期出现的错误!
- 小问题:关于 GetFieldValue
你在MyDialog的构造函数里调AFX_MANAGE_STATE(AfxGetStaticModuleState())试试,
不敢保证