skincontrols.cpp
来自「网狐棋牌(家园版)最新版本7.1.1源代码,共享组件源码」· C++ 代码 · 共 93 行
CPP
93 行
#include "Stdafx.h"
#include <AfxDLLx.h>
#include "SkinControls.h"
static AFX_EXTENSION_MODULE SkinControlsDLL={NULL,NULL};
//////////////////////////////////////////////////////////////////////////
//DLL 主函数
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason==DLL_PROCESS_ATTACH)
{
if (!AfxInitExtensionModule(SkinControlsDLL, hInstance)) return 0;
new CDynLinkLibrary(SkinControlsDLL);
}
else if (dwReason==DLL_PROCESS_DETACH)
{
AfxTermExtensionModule(SkinControlsDLL);
}
return 1;
}
//////////////////////////////////////////////////////////////////////////
//透明绘画
extern "C" SKIN_CONTROL_CLASS void AlphaDrawImage(CDC * pDesDC, int nXDes, int nYDes, int nDesWidth, int nDesHeight,
CDC * pScrDC, int nXScr, int nYScr, int nScrWidth, int nScrHeight, COLORREF crTransColor)
{
//保存变量
COLORREF crTextColor=pDesDC->GetTextColor();
//建立变量
CDC ScreenDC,ImageDC,MaskDC;
CBitmap BmpScreen,BmpImage,BmpMaskBmp;
BmpMaskBmp.CreateBitmap(nDesWidth,nDesHeight,1,1,NULL);
BmpImage.CreateCompatibleBitmap(pDesDC,nDesWidth,nDesHeight);
BmpScreen.CreateCompatibleBitmap(pDesDC,nDesWidth,nDesHeight);
MaskDC.CreateCompatibleDC(pDesDC);
ImageDC.CreateCompatibleDC(pDesDC);
ScreenDC.CreateCompatibleDC(pDesDC);
CBitmap * pOldBmpImage=ImageDC.SelectObject(&BmpImage);
CBitmap * pOldMaskBmp=MaskDC.SelectObject(&BmpMaskBmp);
CBitmap * pOldScreenBmp=ScreenDC.SelectObject(&BmpScreen);
//绘画图像
if ((nDesWidth==nScrWidth)&&(nDesHeight==nScrHeight))
{
ScreenDC.BitBlt(0,0,nDesWidth,nDesHeight,pDesDC,nXDes,nYDes,SRCCOPY);
ImageDC.BitBlt(0,0,nDesWidth,nDesHeight,pScrDC,nXScr,nYScr,SRCCOPY);
}
else
{
ScreenDC.StretchBlt(0,0,nDesWidth,nDesHeight,pDesDC,nXDes,nYDes,nScrWidth,nScrHeight,SRCCOPY);
ImageDC.StretchBlt(0,0,nDesWidth,nDesHeight,pScrDC,nXScr,nYScr,nScrWidth,nScrHeight,SRCCOPY);
}
ImageDC.SetBkColor(crTransColor);
MaskDC.BitBlt(0,0,nDesWidth,nDesHeight,&ImageDC,0,0,SRCCOPY);
//生成透明区域为黑色的位图
ImageDC.SetBkColor(RGB(0,0,0));
ImageDC.SetTextColor(RGB(255,255,255));
ImageDC.BitBlt(0,0,nDesWidth,nDesHeight,&MaskDC,0,0,SRCAND);
//其它部分变成黑色
ScreenDC.SetBkColor(RGB(255,255,255));
ScreenDC.SetTextColor(RGB(0,0,0));
ScreenDC.BitBlt(0,0,nDesWidth,nDesHeight,&MaskDC,0,0,SRCAND);
ScreenDC.BitBlt(0,0,nDesWidth,nDesHeight,&ImageDC,0,0,SRCPAINT);
//更新屏幕
pDesDC->BitBlt(nXDes,nYDes,nDesWidth,nDesHeight,&ScreenDC,0,0,SRCCOPY);
//清理变量
ImageDC.SelectObject(pOldBmpImage);
MaskDC.SelectObject(pOldMaskBmp);
ScreenDC.SelectObject(pOldScreenBmp);
ImageDC.DeleteDC();
MaskDC.DeleteDC();
ScreenDC.DeleteDC();
BmpImage.DeleteObject();
BmpScreen.DeleteObject();
BmpMaskBmp.DeleteObject();
//恢复设置
pDesDC->SetTextColor(crTextColor);
return;
}
//////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?