--- mstools/samples/ole/srvrdemo/obj.c 2018/08/09 18:21:49 1.1.1.2 +++ mstools/samples/ole/srvrdemo/obj.c 2018/08/09 18:23:58 1.1.1.3 @@ -150,7 +150,8 @@ LPOBJ CreateNewObj (BOOL fDoc_Changed) VOID CutOrCopyObj (BOOL fOpIsCopy) { LPOBJ lpobj; - HANDLE hData; + HANDLE hData; +// UINT hBit; if (OpenClipboard (hwndMain)) { @@ -172,15 +173,16 @@ VOID CutOrCopyObj (BOOL fOpIsCopy) } if ((hData = GetEnhMetafile(lpobj)) != NULL) - { + { SetClipboardData(CF_ENHMETAFILE, hData); -// GlobalFree(hData); + GlobalFree(hData); } if ((hData = GetBitmap(lpobj)) != NULL) - { - SetClipboardData(CF_BITMAP, hData); -// DeleteObject(hData); + { + // SetClipboardData(CF_BITMAP, GetBitmap(lpobj)); + SetClipboardData(CF_BITMAP, hData); + DeleteObject(hData); } @@ -208,7 +210,7 @@ VOID DestroyObj (HWND hwnd) if(lpobj->aName) { GlobalDeleteAtom (lpobj->aName); - lpobj->aName = NULL; + lpobj->aName = '\0'; } if (lpobj->hpal) @@ -245,7 +247,7 @@ static VOID DrawObj (HDC hdc, LPOBJ lpob HPEN hpenOld; HPALETTE hpalOld = NULL; -// if (dctype == dctypeMetafile || dctype == dctypeEnhMetafile) + if (dctype == dctypeMetafile) { SetWindowOrgEx (hdc, 0, 0, NULL); @@ -306,7 +308,7 @@ static VOID DrawObj (HDC hdc, LPOBJ lpob * RETURNS: A handle to the object's picture data * * CUSTOMIZATION: Re-implement - * + * */ static HBITMAP GetBitmap (LPOBJ lpobj) { @@ -314,7 +316,7 @@ static HBITMAP GetBitmap (LPOBJ lpobj) HDC hdcMem; RECT rc; HBITMAP hbitmap; - HBITMAP hbitmapOld; + HBITMAP hbitmapOld; hdcObj = GetDC (lpobj->hwnd); @@ -342,8 +344,14 @@ static HBITMAP GetBitmap (LPOBJ lpobj) // Set the 1/10 of HIMETRIC units for the bitmap SetBitmapDimensionEx (hbitmap, (DWORD) (rc.right/10), (DWORD) (rc.bottom/10), NULL); - - return hbitmap; + +// if (OpenClipboard (hwndMain)) +// { +// // EmptyClipboard (); +// SetClipboardData(CF_BITMAP, hbitmap); +// CloseClipboard(); +// } + return hbitmap; } @@ -698,9 +706,9 @@ OLECLIPFORMAT APIENTRY ObjEnumFormats return cfObjectLink; if (cfFormat == cfObjectLink) - return NULL; + return 0; - return NULL; + return 0; } @@ -794,7 +802,7 @@ OLESTATUS APIENTRY ObjGetData * ---------------- * * LPOLEOBJECT lpoleobject - The OLE object - * LPSTR lpszProtocol - The protocol name, either "StdFileEditing" + * OLE_LPCSTR lpszProtocol - The protocol name, either "StdFileEditing" * or "StdExecute" * * RETURNS: If lpszProtocol is supported, return a pointer to an OLEOBJECT @@ -806,7 +814,7 @@ OLESTATUS APIENTRY ObjGetData * */ LPVOID APIENTRY ObjQueryProtocol - (LPOLEOBJECT lpoleobject, LPSTR lpszProtocol) + (LPOLEOBJECT lpoleobject, OLE_LPCSTR lpszProtocol) { return lstrcmp (lpszProtocol, "StdFileEditing") ? NULL : lpoleobject ; } @@ -850,7 +858,7 @@ OLESTATUS APIENTRY ObjRelease (LPOLEOBJ * a linked object depends only on the source file. * * LPOLEOBJECT lpoleobject - The OLE object - * LPRECT lprect - The new bounds + * OLE_CONST RECT FAR* lprect - The new bounds * * RETURNS: OLE_OK * @@ -859,7 +867,7 @@ OLESTATUS APIENTRY ObjRelease (LPOLEOBJ * uses MoveWindow.) * */ -OLESTATUS APIENTRY ObjSetBounds (LPOLEOBJECT lpoleobj, LPRECT lprect) +OLESTATUS APIENTRY ObjSetBounds (LPOLEOBJECT lpoleobj, OLE_CONST RECT FAR * lprect) { if (docMain.doctype == doctypeEmbedded) { @@ -887,7 +895,7 @@ OLESTATUS APIENTRY ObjSetBounds (LPOLEO * the server to use for the object. * * LPOLEOBJECT lpoleobject - The OLE object - * LPLOGPALETTE lppal - Suggested palette + * OLE_CONST LOGPALETTE FAR * lppal - Suggested palette * * RETURNS: OLE_ERROR_PALETTE if CreatePalette fails, * OLE_OK otherwise @@ -899,7 +907,7 @@ OLESTATUS APIENTRY ObjSetBounds (LPOLEO * */ OLESTATUS APIENTRY ObjSetColorScheme - (LPOLEOBJECT lpoleobject, LPLOGPALETTE lppal) + (LPOLEOBJECT lpoleobject, OLE_CONST LOGPALETTE FAR *lppal) { HPALETTE hpal = CreatePalette (lppal); LPOBJ lpobj = (LPOBJ) lpoleobject;