⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagecontrol.cpp

📁 下载来的一个看图软件的源代码
💻 CPP
字号:
// This is just a test class to see how I could implement returning // a COM object that was instanciated inside my C++ code to the // calling code (eg. VFP, VB, etc.). It barely works, but isn't// maintaining the internal reference correctly (will blow up if // called multiple times), and I don't think it's cleaning up// after itself. //// Written by: Paul Mrozowski//             Senior Applications Developer//     //             Kirtland Associates, Inc.//             1220 Morse//             Suite 200//             Royal Oak, MI 48067//             Phone: 248.542.2675////             Email: pcm@kirtlandsys.com////             Copyright(C) 2002 - Kirtland Associates// ImageControl.cpp : Implementation of CImageControl#include "stdafx.h"#include "MagickCOM.h"#include "ImageControl.h"#include "comutil.h"#include <atlbase.h>//CComModule _Module;  // extern if declared elsewhere#include <atlcom.h>#include "comdef.h"/////////////////////////////////////////////////////////////////////////////// CImageControlSTDMETHODIMP CImageControl::get_Image(IImage **pVal){	// Creates an instance of the Image COM object	// if it doesn't already exist. Then it returns a 	// reference to it.    if(idImage == NULL)	{ 		// The Image object isn't defined yet		// Let's create it, then grab the correct interface        IImage *pImageControl;		HRESULT	hrImage = 0;								CComPtr<IDispatch> lpDispatch;		hrImage = lpDispatch.CoCreateInstance(_bstr_t("MagickCOM.Image"));		// Check to see if anything went wrong		// If it did, return NULL		// NOTE: MessageBox just here for debugging.		if ( FAILED(hrImage))		{			*pVal = NULL;			MessageBox(NULL, "CoCreateInstance() failed :-(", "MagickCOM Error", MB_OK);			return S_FALSE;		}						hrImage = lpDispatch->QueryInterface(IID_IImage, (void **)&pImageControl);				// NOTE: MessageBox just here for debugging.		if ( FAILED(hrImage))		{			*pVal = NULL;			MessageBox(NULL, "QueryInterface() failed. :-(", "MagickCOM Error", MB_OK);			return S_FALSE;		}				idImage = pImageControl;        	}    	// Finally either return a pointer, or a NULL 	*pVal = idImage;	return S_OK;}/*HRESULT hr;IImageControl *pImageControl;hr = CoCreateInstance(CLSID_Foo, NULL, CLSCTX_ALL,               IID_IFoo, (void **)&pImageControl);*////*  HRESULT hr = S_OK;    CComPtr<IBar> pBar;    hr = pBar.CoCreateInstance(CLSID_Bar);    if( FAILED(hr) ) return hr;    hr = pBar->DoSomething();    if( FAILED(hr) ) return hr;    CComPtr<IBarEx> pBarEx;    hr = pBar->QueryInterface(&pBarEx);    if( FAILED(hr) ) return hr;    hr = pBarEx->DoSomethingEx();    if( FAILED(hr) ) return hr;    return S_OK;*/STDMETHODIMP CImageControl::get_GetAddress(long *pVal){	// TODO: Add your implementation code here	const long uiMem = reinterpret_cast<const long>(this); 	 	*pVal = uiMem;	return S_OK;}STDMETHODIMP CImageControl::SampleMessage(){	// TODO: Add your implementation code here    MessageBox(NULL, "Hello, from MagickCOM.ImageControl", "MagickCOM Message", MB_OK);	return S_OK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -