📄 colorwnd.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 + -