【win32】最简单的异形窗口实现
来源:互联网 发布:linux 管道 详解 编辑:程序博客网 时间:2024/06/10 06:00
void CTransparentWnd::SetupRegion(CDC *pDC, unsigned short MaskID)
{
CDC memDC;
CBitmap cBitmap;
CBitmap* pOldMemBmp = NULL;
COLORREF col;
CRect cRect;
int x, y;
CRgn wndRgn, rgnTemp;
GetWindowRect(&cRect);
cBitmap.LoadBitmap(MaskID);
memDC.CreateCompatibleDC(pDC);
pOldMemBmp = memDC.SelectObject(&cBitmap);
wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());
for(x=0; x<=cRect.Width(); x++)
{
for(y=0; y<=cRect.Height(); y++)
{
col = memDC.GetPixel(x, y);
if(col == 0)
{
rgnTemp.CreateRectRgn(x, y, x+1, y+1);
wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_XOR);
rgnTemp.DeleteObject();
}
}
}
if (pOldMemBmp) memDC.SelectObject(pOldMemBmp);
SetWindowRgn((HRGN)wndRgn, TRUE);
}
void CTransparentWnd::OnPaint()
{
CPaintDC dc(this);
// Add your drawing code here!
CRect rect;
GetWindowRect(&rect);
CDC memDC;
CBitmap cBitmap;
CBitmap* pOldMemBmp = NULL;
cBitmap.LoadBitmap(m_BitmapID);
memDC.CreateCompatibleDC(pDC);
pOldMemBmp = memDC.SelectObject(&cBitmap);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
if (pOldMemBmp) memDC.SelectObject( pOldMemBmp );
}
图一,WindowBM.bmp 图二,WindowMask.bmp
- 【win32】最简单的异形窗口实现
- 一个最简单的Delphi2010的PNG异形窗口方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- 最简单的win32的窗口程序
- Win32下创建异形窗口
- 窗口界面编程之一:VB实现简单异形窗口
- Windows Mobile上异形窗口的实现
- DUI异形窗口实现
- VC++实现窗口异形
- DUILIB异形窗口实现
- DUILIB异形窗口实现
- qt实现异形窗口
- DUILIB异形窗口实现
- 重温WIN32 API ------ 最简单的Windows窗口封装类
- MFC(一):win32创建一个最简单的窗口
- 手动编写最简单win32窗口
- 用VC++实现异形窗口.
- 用VC++实现异形窗口
- 欢迎使用CSDN-markdown编辑器
- web实现basic与FORM验证
- 《设计模式》—单例模式
- JAVA 插入排序
- BZOJ 1698 (USACO 2007 Feb)Liypad Pond (黄金)荷叶池塘
- 【win32】最简单的异形窗口实现
- C语言链表基础
- TIJ摘要:访问控制权限
- s3c2440 led驱动分析
- Python使用线性回归简单预测数据
- 判断点在直线的一哪侧
- gns3从代码开始制作安装程序
- handler为什么要使用内部类
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) at com.mysql