• 大小: 243KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: 透明窗口  mfc  

资源简介

使用UpdateLayeredWindow函数实现透明窗口。

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “ImageEx.h“
//////////////////////////////////////////////////////////////////////////////////

//构造函数
CImageEx::CImageEx()
{
::SetRect(&m_rcNinePart0000);

return;
}

//析构函数
CImageEx::~CImageEx()
{
//销毁图片
DestroyImage(); 

return;
}

//销毁图片
 bool CImageEx::DestroyImage()
 {
Destroy();

  return true;
 }

//加载图片
bool CImageEx::LoadImage(LPCTSTR pszFileName)
{
HRESULT hr = CImage::Load(pszFileName);
if (hr == S_OK)
{
return SetAlphaBit();
}
else
{
return FALSE;
}
}

//加载图片
bool CImageEx::LoadImage(HINSTANCE hInstance LPCTSTR pszResourceNameLPCTSTR pszResourceType/*=TEXT(“IMAGE“)*/)
{
//查找资源
HRSRC hResource=FindResource(hInstancepszResourceNamepszResourceType);
if (hResource==NULL) return false;

//读取资源
DWORD dwImageSize=SizeofResource(hInstancehResource);
LPVOID pImageBuffer=LoadResource(hInstancehResource);

//创建数据
IStream * pIStream=NULL;
if (CreateStreamOnHGlobal(NULLTRUE&pIStream)!=S_OK)
{
ASSERT(FALSE);
return false;
}

//写入数据
pIStream->Write(pImageBufferdwImageSizeNULL);

HRESULT hr = CImage::Load(pIStream);

  //释放资源
  SafeRelease(pIStream);

if (hr == S_OK)
{
return SetAlphaBit();
}
else
{
return FALSE;
}
}

//绘画图像
BOOL CImageEx::DrawImage(CDC * pDC INT nXPos INT nYPos)
{
pDC->SetStretchBltMode(HALFTONE);
return CImage::Draw(pDC->GetSafeHdc()nXPosnYPos);
}

//绘画图像
BOOL CImageEx::DrawImage( CDC * pDC INT nXPos INT nYPos INT nDestWidth INT nDestHeight )
{
pDC->SetStretchBltMode(HALFTONE);
return CImage::Draw(pDC->GetSafeHdc()nXPosnYPosnDestWidthnDestHeight);
}

//绘画图像
BOOL CImageEx::DrawImage( CDC * pDC RECT &rc )
{
pDC->SetStretchBltMode(HALFTONE);
return CImage::Draw(pDC->GetSafeHdc()rc);
}

//绘画图像
BOOL CImageEx::DrawImage(CDC * pDC INT nXDest INT nYDest INT nDestWidth INT nDestHeight INT nXScr INT nYSrc)
{
pDC->SetStretchBltMode(HALFTONE);
return CImage::Draw(pDC->GetSafeHdc()nXDestnYDestnDestWidthnDestHeightnXScrnYSrcnDestWidthnDestHeight);
}

//绘画图像
BOOL CImageEx::DrawImage(CDC * pDC INT nXDest INT nYDest INT nDestWidth INT nDestHeight INT nXScr INT nYSrc INT nSrcWidth INT nSrcHeight)
{
pDC->SetStretchBltMode(HALFTONE);
if( nSrcWidth == 0 || nSrcHeight == 0 ) return FALSE;

return CImage::Draw(pDC->GetSafeHdc()nXDestnYDestnDestWidthnDestHeightnXScrnYSrcnSrcWidthnSrcHeight);
}

bool CImageEx::Draw( CDC * pDC INT x INT y INT cx INT cyINT nLeftINT nTopINT nRightINT nBottom )
{
int cxImage = GetWidth();
int cyImage = GetHeight();

// 左上
{
RECT rcDest = {x y x+nLeft y+nTop};
RECT rcSrc = {0 0 nLeft nTop};
if (!::IsRectEmpty(&rcDest) && !::IsRectEmpty(&rcSrc))
DrawImage(pDCrcDest.left rcDest.top rcDest.right-rcDest.left rcDest.bottom-rcDest.top 
rcSrc.left rcSrc.toprcSrc.right-rcSrc.left rcSrc.bottom-rcSrc.top);
}

// 左边
{
RECT r

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9255  2013-11-06 11:01  layeredWindow\layeredWindow\ImageEx.cpp

     文件       1776  2014-01-12 21:43  layeredWindow\layeredWindow\ImageEx.h

     文件       1744  2014-01-12 16:24  layeredWindow\layeredWindow\layeredWindow.cpp

     文件        487  2014-01-12 16:24  layeredWindow\layeredWindow\layeredWindow.h

     文件       4259  2014-01-12 16:25  layeredWindow\layeredWindow\layeredWindow.rc

     文件       5555  2014-01-12 16:51  layeredWindow\layeredWindow\layeredWindow.vcproj

     文件       3822  2014-01-14 11:12  layeredWindow\layeredWindow\layeredWindowDlg.cpp

     文件        661  2014-01-14 11:11  layeredWindow\layeredWindow\layeredWindowDlg.h

     文件      67777  2007-11-28 16:21  layeredWindow\layeredWindow\res\layeredWindow.ico

     文件        369  2014-01-12 16:24  layeredWindow\layeredWindow\res\layeredWindow.rc2

     文件        465  2014-01-12 17:26  layeredWindow\layeredWindow\Resource.h

     文件        146  2014-01-12 16:24  layeredWindow\layeredWindow\stdafx.cpp

     文件       2258  2014-01-12 16:58  layeredWindow\layeredWindow\stdafx.h

     文件       1030  2014-01-12 16:24  layeredWindow\layeredWindow\targetver.h

     文件        905  2014-01-12 16:24  layeredWindow\layeredWindow.sln

    ..A..H.     23552  2014-01-14 11:13  layeredWindow\layeredWindow.suo

     文件     179101  2014-01-14 11:03  layeredWindow\Sample.png

     目录          0  2014-01-14 11:13  layeredWindow\layeredWindow\res

     目录          0  2014-01-14 11:13  layeredWindow\layeredWindow

     目录          0  2014-01-14 11:13  layeredWindow

----------- ---------  ---------- -----  ----

               303162                    20


评论

共有 条评论