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

📄 bitmap.h

📁 Vc.Net入门与提高源码
💻 H
字号:
// Bitmap.h : Declaration of the CBitmap

#ifndef __BITMAP_H_
#define __BITMAP_H_

#include "resource.h"       // main symbols

// The following macro calculates the number of bytes required to 
// store a 16-col bitmap including the DWORD alignment bytes
#define CBROW(x) 4 * ( ( 4 * ( x ) + 31 ) / 32 )

/////////////////////////////////////////////////////////////////////////////
// CBitmap
class ATL_NO_VTABLE CBitmap : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CBitmap, &CLSID_Bitmap>,
	public IDispatchImpl<IBitmap, &IID_IBitmap, &LIBID_PICTURELib>
{
public:
	CBitmap()
	{
        // There is no bitmap until it is resized
        m_bitmap = NULL;
		m_bAutoSize = VARIANT_TRUE;
		m_width = m_height = 0;

        // Create the linked pixels object
        CComObject<CPixels>::CreateInstance(&m_pPixels);
        m_pPixels->m_pBitmap = this;
        m_pPixels->AddRef();
	}

    ~CBitmap()
    {
        // Release the pixels collection
        if (m_pPixels) m_pPixels->Release();
    }

DECLARE_REGISTRY_RESOURCEID(IDR_BITMAP)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CBitmap)
	COM_INTERFACE_ENTRY(IBitmap)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// Member variables
    long m_width;
    long m_height;
    LPBYTE m_bitmap;
	bool m_bRequiresSave;
	VARIANT_BOOL m_bAutoSize;
    CComObject<CPixels>* m_pPixels;

// Member functions
   	HRESULT UpdateSize(long lWidth, long lHeight);
	HRESULT TestCoordinates(long x, long y);

public:
// IBitmap
	STDMETHOD(get_Pixels)(/*[out, retval]*/ IPixels* *pVal);
	STDMETHOD(get_AutoSize)(/*[out, retval]*/ VARIANT_BOOL *pVal);
	STDMETHOD(put_AutoSize)(/*[in]*/ VARIANT_BOOL newVal);
	STDMETHOD(SaveToFile)(/*[in, optional]*/ VARIANT vbstrFileName, /*[in, optional]*/ VARIANT vhWndParentWindow);
	STDMETHOD(SetPoint)(IPixel* pPixel);
	STDMETHOD(SetPoints)(VARIANT vPoints);
	STDMETHOD(get_Height)(/*[out, retval]*/ long *pVal);
	STDMETHOD(put_Height)(/*[in]*/ long newVal);
	STDMETHOD(get_Width)(/*[out, retval]*/ long *pVal);
	STDMETHOD(put_Width)(/*[in]*/ long newVal);
	STDMETHOD(SaveToStream)(/*[in]*/ IStream* pStm);
	STDMETHOD(SaveToIIS4Response)(/*[in]*/ VARIANT vResponse);
};

#endif //__BITMAP_H_

⌨️ 快捷键说明

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