OLEFILE.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * OLEFILE.C
- *
- * Functions for handling special case OLE functions for operations
- * on a File menu such as New, Open, Save, SaveAs, and Exit.
- *
- * Functions:
- * PDocRevokeAndCreate
- *
- * Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
- * Win32 version, January 1994
- */
- #ifdef MAKEOLESERVER
- #include <windows.h>
- #include <ole.h>
- #include "cosmo.h"
- #include "oleglobl.h"
- /*
- * PDocRevokeAndCreate
- *
- * Purpose:
- * Standard sequence of calling OleRevokeServerDoc, allocating and
- * initializing a new OLESERVERDOC structure, and calling
- * OleRegisterServerDoc.
- *
- * Parameters:
- * pOLE LPXOLEGLOBALS pointer to OLE global variables.
- *
- * Return Value:
- * LPCOSMODOC Pointer to the new document, or NULL if it fails.
- *
- */
- LPCOSMODOC WINAPI PDocRevokeAndCreate(LPXOLEGLOBALS pOLE)
- {
- LPCOSMODOC pDoc;
- OLESTATUS os;
- os=OleRevokeServerDoc(pOLE->pSvr->pDoc->lh);
- /*
- * Even through we are revoking the document, the server will also
- * be Released (through not revoked) since no OLE connections will
- * exist to the server. Since ServerRelease in this application
- * frees the allocated document, we need to wait until we pass
- * ServerRelease before allocating a new document. Otherwise we'd
- * allocate a new one and ServerRelease would immediately free it.
- *
- * So in calling FOLEReleaseWait we watch the server's fRelease flag.
- */
- if (OLE_WAIT_FOR_RELEASE==os)
- {
- pOLE->pSvr->fRelease=FALSE;
- FOLEReleaseWait(&pOLE->pSvr->fRelease, pOLE->pSvr->lh);
- }
- pDoc=PDocumentAllocate(&pOLE->vtblDoc);
- pOLE->pSvr->pDoc=pDoc;
- if (NULL==pDoc)
- return NULL;
- os=OleRegisterServerDoc(pOLE->pSvr->lh, pGlob->szFile,
- (LPOLESERVERDOC)pOLE->pSvr->pDoc,
- &pOLE->pSvr->pDoc->lh);
- pOLE->pSvr->fLink=FALSE;
- pOLE->pSvr->fEmbed=FALSE;
- MenuEmbeddingSet(pGlob->hWnd, NULL, FALSE);
- return pDoc;
- }
- #endif //MAKEOLESERVER