完了完了,情况危急的时刻,居然脑子空了,问大家一个问题。。
这个类是这样的:
class CIOleUILinkContainer : public IOleUILinkContainer
{
private:
ULONG m_cRef;
LPCPage m_pPage;
UINT m_iTenant;
LPOLEUILINKCONTAINER m_pDelIUILinks;
public:
BOOL m_fDirty; //No reason to hide it.
protected:
STDMETHODIMP GetObjectInterface(DWORD, REFIID, LPLPVOID);
public:
CIOleUILinkContainer(LPCPage);
~CIOleUILinkContainer(void);
BOOL FInit(void);
BOOL IsDirty(void);
STDMETHODIMP QueryInterface(REFIID, LPLPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP_(DWORD) GetNextLink(DWORD);
STDMETHODIMP SetLinkUpdateOptions(DWORD, DWORD);
STDMETHODIMP GetLinkUpdateOptions(DWORD, LPDWORD);
STDMETHODIMP SetLinkSource(DWORD, LPSTR, ULONG
, ULONG FAR *, BOOL);
STDMETHODIMP GetLinkSource(DWORD, LPSTR FAR *
, ULONG FAR *, LPSTR FAR *
, LPSTR FAR *, BOOL FAR *
, BOOL FAR *);
STDMETHODIMP OpenLinkSource(DWORD);
STDMETHODIMP UpdateLink(DWORD, BOOL, BOOL);
STDMETHODIMP CancelLink(DWORD);
};
typedef CPage *LPCPage;
BOOL CPages::FGetUILinkContainer(LPCIOleUILinkContainer *ppObj)
{
LPCIOleUILinkContainer pObj;
*ppObj=NULL;
if (NULL==m_pPageCur)
return FALSE;
pObj=new CIOleUILinkContainer(m_pPageCur);
if (NULL==pObj)
return FALSE;
if (!pObj->FInit())
{
delete pObj;
return FALSE;
}
pObj->AddRef();
*ppObj=pObj;
return TRUE;
}