检查退出标志
| BOOL CMyClass::IsDead() { return WaitForSingleObject(m_eventDead,0)==WAIT_OBJECT_0; } BOOL CMyClass::IsKilling() { return WaitForSingleObject(m_eventKill,0)==WAIT_OBJECT_0; } |
在外部可以这样终止线程
| //check if dead if(!IsDead()&&m_pThreadWrite!=NULL){ m_eventKill.SetEvent(); WaitForSingleObject(m_eventDead,INFINITE); m_pThreadWrite=NULL; } |
问:怎么实现IEnumString接口?
答:http://www.codeproject.com/wtl/customautocomplete_wtl.asp
IAutoComplete and custom IEnumString implementation for WTL dialogs
下面是我的基于数据库的IEnumString实现
| if !defined(AFX_ENUMSTRING_H__4D5D61AD_CD0D_477C_880F_8E5EEB5B1E8F__INCLUDED_) #define AFX_ENUMSTRING_H__4D5D61AD_CD0D_477C_880F_8E5EEB5B1E8F__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // EnumString.h : header file // ////////////////////////////////////////////////////////// // CEnumString command target #include <shldisp.h> #include "esuihelper.h" class _ES_UI_EXPORT CEnumString : public IEnumString { public: CEnumString(); // protected constructor used by dynamic creation // Attributes public: ULONG m_nRefCount; // Operations public: STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject); |