是啊,我发现用完第一个方法后,就调用~CServiceCtl()方法了,是为什么呢?下面是我的程序的定义部分,我在Starlistening方法里对m_csTestStr赋了值,在Stoplistening方法里使用这个变量时就发现这个变量的值是空的。是不是我定义有问题呢? class ATL_NO_VTABLE CServiceCtl : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CServiceCtl, &CLSID_ServiceCtl>, public IDispatchImpl<IServiceCtl, &IID_IServiceCtl, &LIBID_APPSERVERLib> { public: CServiceCtl() {
class ATL_NO_VTABLE CServiceCtl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CServiceCtl, &CLSID_ServiceCtl>,
public IDispatchImpl<IServiceCtl, &IID_IServiceCtl, &LIBID_APPSERVERLib>
{
public:
CServiceCtl()
{
}
~CServiceCtl()
{
}//----------------added by firness---
public:
CString m_csTestStr;DECLARE_REGISTRY_RESOURCEID(IDR_SERVICECTL)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CServiceCtl)
COM_INTERFACE_ENTRY(IServiceCtl)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()// IServiceCtl
public:
STDMETHOD(StopListening)();
STDMETHOD(StartListening)();