不规则对话框的实现 C++.doc

上传人:新** 文档编号:557586852 上传时间:2022-10-15 格式:DOC 页数:3 大小:28.51KB
返回 下载 相关 举报
不规则对话框的实现 C++.doc_第1页
第1页 / 共3页
不规则对话框的实现 C++.doc_第2页
第2页 / 共3页
不规则对话框的实现 C++.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《不规则对话框的实现 C++.doc》由会员分享,可在线阅读,更多相关《不规则对话框的实现 C++.doc(3页珍藏版)》请在金锄头文库上搜索。

1、不规则对话框的实现 C+ / 在 OnInitDialog() 时初始化相关数据 HDC hdcs; HBITMAP pBitmap; CBitmap m_bmp; pBitmap = (HBITMAP)LoadImage(NULL,图片.bmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); hdcs = CreateCompatibleDC(NULL); m_bmp.Attach( pBitmap ); BITMAP bm; m_bmp.GetBitmap(&bm); CRect rtWindow; GetWindowRect(&rtWindow); rtWindow

2、.right = rtWindow.left+bm.bmWidth; rtWindow.bottom =rtWindow.top +bm.bmHeight; MoveWindow(&rtWindow); CClientDC dc(this); SetupRegion(&dc,m_bmp,RGB(191,194,114) ); / 最后在 OnPaint 的else 里面 CClientDC dc(this); CDC picDC; picDC.CreateCompatibleDC (&dc); CBitmap *pOldBmp; pOldBmp = picDC.SelectObject (&m

3、_bmp); BITMAP bm; m_bmp.GetBitmap(&bm); dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight,&picDC,0,0,SRCCOPY); dc.SelectObject(pOldBmp); / 下面是主代码void CtextDemoDlg:SetupRegion(CDC *pDC, CBitmap &cBitmap, COLORREF TransColor) CDC memDC; /创建与传入DC兼容的临时DC memDC.CreateCompatibleDC(pDC); CBitmap *pOldMemBmp=NULL; /将位

4、图选入临时DC pOldMemBmp=memDC.SelectObject(&cBitmap); CRgn wndRgn; /创建总的窗体区域,初始region为0 wndRgn.CreateRectRgn(0,0,0,0); BITMAP bit; cBitmap.GetBitmap (&bit);/取得位图参数,这里要用到位图的长和宽 int y; for(y=0;y=bit.bmHeight ;y+) CRgn rgnTemp; /保存临时region int iX = 0; do /跳过透明色找到下一个非透明色的点. while (iX = bit.bmWidth & memDC.Ge

5、tPixel(iX, y) = TransColor) iX+; /记住这个起始点 int iLeftX = iX; /寻找下个透明色的点 while (iX = bit.bmWidth & memDC.GetPixel(iX, y) != TransColor) +iX; /创建一个包含起点与重点间高为1像素的临时“region” rgnTemp.CreateRectRgn(iLeftX, y, iX, y+1); /合并到主region. wndRgn.CombineRgn(&wndRgn, &rgnTemp, RGN_OR); /删除临时region,否则下次创建时和出错 rgnTemp.DeleteObject(); while(iX GetWindow(); pWnd-SetWindowRgn(wndRgn,TRUE); pWnd-SetForegroundWindow();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号