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

📄 colorwnd.cpp

📁 组态王图库开发包
💻 CPP
字号:
//实现接口函数
#include "stdafx.h"
#include "ColorWnd.h"

HRESULT IColorPalette::CreatePalette(OLE_HANDLE hOwner)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = hOwner;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(1, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::ClosePalette()
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));	

	dispparams.rgvarg = NULL;
	dispparams.cArgs = 0;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(2, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);
	
	return hr;
}

HRESULT IColorPalette::ShowPalette(BOOL bVisible)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)bVisible;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
/*
	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_BOOL;
	dispparams.rgvarg[0].bVal = bVisible;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
*/
	
	HRESULT hr = Invoke(3, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetClrType(int nType)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I2;
	dispparams.rgvarg[0].iVal = nType;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(4, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetPenColor(OLE_COLOR clrPen)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrPen;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(5, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetFillColor(OLE_COLOR clrFill)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrFill;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(6, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetTextColor(OLE_COLOR clrText)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrText;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(7, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetWinColor(OLE_COLOR clrWin)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrWin;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(8, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::SetTransColor(OLE_COLOR clrTrans)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrTrans;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(9, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::GetPenColor(OLE_COLOR FAR* pClrPen)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrPen;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(10, IID_NULL,
		LOCALE_SYSTEM_DEFAULT,
		DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::GetFillColor(OLE_COLOR FAR* pClrFill)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrFill;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(11, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::GetTextColor(OLE_COLOR FAR* pClrText)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrText;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(12, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::GetWinColor(OLE_COLOR FAR* pClrWin)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrWin;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(13, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::GetTransColor(OLE_COLOR FAR* pClrTrans)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrTrans;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(14, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

HRESULT IColorPalette::PopupWindow(OLE_HANDLE hOwner, short nLeft, short nTop,OLE_COLOR* pClrResult)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG[4];

	dispparams.rgvarg = pVariant;
	//参数和ID号码的顺序是相反的
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrResult;
	dispparams.rgvarg[1].vt = VT_I2;
	dispparams.rgvarg[1].iVal = nTop;
	dispparams.rgvarg[2].vt = VT_I2;
	dispparams.rgvarg[2].iVal = nLeft;
	dispparams.rgvarg[3].vt = VT_I4;
	dispparams.rgvarg[3].lVal = (long)hOwner;
	dispparams.cArgs = 4;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(15, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}


HRESULT IColorPalette::SetBkgColor(OLE_COLOR clrBkg)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = clrBkg;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(16, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}
	
HRESULT IColorPalette::GetBkgColor(OLE_COLOR FAR* pClrBkg)
{
	DISPPARAMS dispparams;
	memset(&dispparams, 0, sizeof(DISPPARAMS));
	
	VARIANTARG *pVariant = new VARIANTARG;

	dispparams.rgvarg = pVariant;
	dispparams.rgvarg[0].vt = VT_I4;
	dispparams.rgvarg[0].lVal = (long)pClrBkg;
	dispparams.cArgs = 1;
	dispparams.cNamedArgs = 0;
	
	HRESULT hr = Invoke(17, IID_NULL, 0, DISPATCH_METHOD, 
		&dispparams, NULL, NULL, NULL);

	delete pVariant;
	return hr;
}

⌨️ 快捷键说明

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