powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глянте свежим взглядом
3 сообщений из 3, страница 1 из 1
Глянте свежим взглядом
    #33590156
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу больше, голова уже не варит совсем, где-то ошибка. Компилятор ругается так
Код: plaintext
1.
d:\qicon.cpp( 547 ) : error C2512: 'CQIcon::BitmapCache' : no appropriate default constructor available
d:\qicon.cpp( 552 ) : error C2512: 'CQIcon::BitmapCache' : no appropriate default constructor available

хедер:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
#pragma once
#include "qbitmap.h"

#define QICON_PER_ALPHA  1 . 4 
#define QICON_CLR_ALPHA COLORREF(-1L)
/////////////////////////////////////////////////////////////////////////////////////////////
// CQBMPCache
class AFX_EXT_CLASS CQBMPCache : public CQBitmap
{
private:
	HBITMAP m_hBitmapCache;
	void _InitCache(const CQBitmap& _bmp);

public:
	CQBMPCache();
	CQBMPCache(const CQBitmap& other);
	virtual ~CQBMPCache();

	virtual bool AssignFromOther(const CQBitmap& other,	bool bEnableTrowException = false);
	virtual void Empty();
	virtual bool IsEmpty() const;
	virtual int AlphaBlend(HDC hDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight,
						   int nSrcX, int nSrcY, int nSrcWidth, int nSrcHeight,
						   BYTE nSCA = 0xFF) const;
	virtual void OnLoad();
}; // class CQBMPCache

//CQIcon -------------- класс иконки для кнопок, панели управления, меню и др. эл. управления
/////////////////////////////////////////////////////////////////////////////////////////////
class AFX_EXT_CLASS CQIcon
{
//КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ=================================================================
public:
	CQIcon(HICON& hIcon, bool bCreateCopy);
	CQIcon(const CQIcon& other);
	CQIcon(HBITMAP hBitmap = NULL, COLORREF clrTransparent = RGB( 0 ,  0 ,  0 ), LPCRECT pRectBitmapSrc = NULL, bool bCloneBitmap = true);
	virtual ~CQIcon();

//ПЕРЕМЕННЫЕ=================================================================================
	COLORREF m_clrAlpha;
	double	 m_lfAlphaAdjustPercent;

//ОПЕРАТОРЫ==================================================================================
	operator HICON() {return GetIcon();}
	operator CSize() const {return GetSize();}
	
	CQIcon& operator = (const CQIcon& other)
	{
		AssignFromOther(other);
		return (*this);
	}

//ПЕРЕЧИСЛЕНИЯ===============================================================================
	enum draw_type {DRAW_NORMAL  =  0 , DRAW_DISABLED =  1 , DRAW_MONO =  2 , DRAW_ALPHA =  3 ,
					DRAW_VAL_MIN =  0 , DRAW_VAL_MAX  =  3 };

//ФУНКЦИИ====================================================================================
	virtual void  Empty();
	virtual bool  IsEmpty() const;
	virtual void  AssignFromOther(const CQIcon& other);
	virtual void  AssignFromHICON(HICON hIcon, bool bCreateCopy);
	virtual	CSize GetSize() const;
	virtual HICON GetIcon(bool bReplaceSysColors = true) const;
	virtual HICON DetachAsHICON(bool bReplaceSysColors = true);
	static  CSize stGetIconSize(HICON hIcon);
	virtual bool  CreateEmptyIcon(COLORREF clrTransparent = COLORREF(-1L), CSize sizeIcon = CSize( 16 ,  16 ),
								  COLORREF** ppOutSurface = NULL);

/////////////////////////////////////////////////////////////////////////////////////////////
//ВНУТРЕННИЕ КЛАССЫ
/////////////////////////////////////////////////////////////////////////////////////////////
private:
	class AFX_EXT_CLASS BitmapCache
	{
	public:
		BitmapCache(HBITMAP hBitmap, COLORREF clrTransparent = RGB( 0 ,  0 ,  0 ), LPCRECT pRectBitmapSrc = NULL, bool bCloneBitmap = true);
		BitmapCache(const BitmapCache& other);
		~BitmapCache();

		BitmapCache& operator = (const BitmapCache& other);

		HBITMAP	 m_hBitmap;
		CSize    m_sizeBitmap;
		COLORREF m_clrTransparent;

		HICON	 CreateHICON(bool bReplaceSysColors = true) const;
		CSize	 GetSize() const;
		COLORREF GetTransparentColor() const;
		HBITMAP  GetBitmap() const;
		INT		 GetColorMap(CMap<COLORREF, COLORREF, DWORD, DWORD>& _map) const;
		INT		 GetBitsPerPixel() const;
	
		bool	 IsEmpty() const;
		void	 Empty();
		void	 AssignIndirect(HBITMAP hBitmap, COLORREF clrTransparent, 
								LPCRECT pRectBitmapSrc = NULL, bool bCloneBitmap = true);
		void	 Serialize(CArchive& ar);
		void	 AssignFromOther(const BitmapCache& other);
	}; // class BitmapCache====================================================================

	class AFX_EXT_CLASS CIconCache
	{
		HICON m_hIcon;
		CSize m_sizeIcon;

	public:
		CIconCache();
		CIconCache(const CIconCache& other);
		~CIconCache();
		bool	IsEmpty() const;
		void	Empty();
		void	Serialize(CArchive& ar);
		void	RecalcIconOriginalSize();
		void	AssignFromOther(const CIconCache& other);
		void	AssignFromHICON(HICON& hIcon, bool bCreateCopy);
		void	Paint(HDC hDC, const POINT& pt, draw_type eDT, HBRUSH hBrush) const;
		HICON	Detach();
		HICON	GetIcon() const;
		CSize	GetSize() const;
		INT		GetColorMap(CMap<COLORREF, COLORREF, DWORD, DWORD>& _map) const;
		INT		GetBitsPerPixel() const;
		CIconCache& operator = (const CIconCache& other);
	}; // class IconCache====================================================================

/////////////////////////////////////////////////////////////////////////////////////////////

	CIconCache			m_IconCache;
	mutable CIconCache	m_IconAlpha;
	BitmapCache			m_BitmapCache;
}; // class CQIcon

и cpp

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
#include "stdafx.h"
#include "qicon.h"
#include "qbitmap.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////////////////////
//CQBMPCache**********************************************************************************
CQBMPCache::CQBMPCache() : m_hBitmapCache(NULL){}
CQBMPCache::CQBMPCache(const CQBitmap& other) : m_hBitmapCache(NULL), CQBitmap(other)
{
	_InitCache(*this);
}

CQBMPCache::~CQBMPCache(){Empty();}

bool CQBMPCache::AssignFromOther(const CQBitmap& other, bool bEnableTrowException)
{
	Empty();
	bool bRetVal = CQBitmap::AssignFromOther(other, bEnableTrowException);
	_InitCache(other);
	return bRetVal;
}

void CQBMPCache::_InitCache(const CQBitmap& _bmp)
{
	if(m_hBitmapCache != NULL)
	{
		::DeleteObject(m_hBitmapCache);
		m_hBitmapCache = NULL;
	}
	if(g_Painter.m_qMsImgAlphaBlend == NULL || _bmp.IsEmpty() || _bmp.GetBPP() !=  32 	|| _bmp.MaskAlpha() ==  0 )
		return;
	CQBitmap _bmpCrt = _bmp;
	if(_bmpCrt.IsEmpty())
		return;
	_bmpCrt.PreMultiplyRGBChannels();
	m_hBitmapCache = _bmpCrt.CreateBitmap();
}

void CQBMPCache::Empty()
{
	CQBitmap::Empty();
	if(m_hBitmapCache != NULL)
	{
		::DeleteObject(m_hBitmapCache);
		m_hBitmapCache = NULL;
	}
}

bool CQBMPCache::IsEmpty() const
{
	bool bRetVal = CQBitmap::IsEmpty();
	return bRetVal;
}

int CQBMPCache::AlphaBlend(HDC hDC,   int nDstX, int nDstY,     int nDstWidth, int nDstHeight, 
						  int nSrcX, int nSrcY,	int nSrcWidth, int nSrcHeight, BYTE nSCA /*0xFF*/) const
{
	ASSERT(hDC != NULL);
	if(IsEmpty() || hDC == NULL)
		return GDI_ERROR;
	if(g_Painter.m_qMsImgAlphaBlend != NULL && m_hBitmapCache != NULL)
	{
		int nRetVal = GDI_ERROR;
		HDC hSrcDC  = ::CreateCompatibleDC(NULL);
		if(hSrcDC != NULL)
		{
			HGDIOBJ hOld = ::SelectObject(hSrcDC, m_hBitmapCache);
			CQPainter::CQPainterAutoPtr::BLENDFUNCTION
				_bf = {AC_SRC_OVER,  0 , nSCA, LAC_SRC_ALPHA};
			if(g_Painter.m_qMsImgAlphaBlend(hDC, nDstX, nDstY, nDstWidth, nDstHeight,
										hSrcDC, nSrcX, nSrcY, nSrcWidth, nSrcHeight, _bf))
				nRetVal =  0 ;
			::SelectObject(hSrcDC, hOld);
			::DeleteDC(hSrcDC);
		}
		return nRetVal;
	}
	return CQBitmap::AlphaBlend(hDC, nDstX, nDstY,	nDstWidth, nDstHeight, nSrcX, nSrcY,
								nSrcWidth, nSrcHeight, nSCA);
}

void CQBMPCache::OnLoad()
{
	CQBitmap::OnLoad();
	_InitCache(*this);
}

/////////////////////////////////////////////////////////////////////////////////////////////
// CQIcon::BitmapCache
CQIcon::BitmapCache::BitmapCache(HBITMAP hBitmap, COLORREF clrTransparent, LPCRECT pRectBitmapSrc, bool bCloneBitmap)
	: m_hBitmap(NULL), m_clrTransparent(RGB( 0 ,  0 ,  0 )), m_sizeBitmap( 0 ,  0 )
{
	AssignIndirect(hBitmap,	clrTransparent,	pRectBitmapSrc,	bCloneBitmap);
}

CQIcon::BitmapCache::BitmapCache(const BitmapCache& other) : m_hBitmap(NULL), m_clrTransparent(RGB( 0 ,  0 ,  0 )), m_sizeBitmap( 0 ,  0 )
{
	AssignFromOther(other);
}

CQIcon::BitmapCache::~BitmapCache()
{
	Empty();
}
как я понял он не видит нужного конструктора, в общем, толи лыжи, толи я...
...
Рейтинг: 0 / 0
Глянте свежим взглядом
    #33590402
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он с тебя дефолтный конструктор требует
из за вот этой строки:
BitmapCache m_BitmapCache;
вроде бы.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Глянте свежим взглядом
    #33590404
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам нашел, в хедере не указал значение по умолчанию для BitmapCache(HBITMAP hBitmap = NULL....
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глянте свежим взглядом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]