转载来自:http://blog.csdn.net/dpsying/article/details/17126761
http://www.jb51.net/article/66694.htm
- void CFDlg::SetRegion(CDC* pDC, UINT BackBitmapID, COLORREF TransColor)
- {
- CDC dcMem;
- if(!dcMem.CreateCompatibleDC(pDC))
- {
- MessageBox(_T("创建兼容DC失败!"));
- }
-
- CBitmap bitmap;
- if(!bitmap.LoadBitmap(BackBitmapID))
- {
- MessageBox(_T("加载位图失败!"));
- }
-
- if(!dcMem.SelectObject(&bitmap))
- {
- MessageBox(_T("选进设备描述表失败!"));
- }
-
- BITMAP bitmapinfo;
- bitmap.GetBitmap(&bitmapinfo);
-
- MoveWindow(0,0,bitmapinfo.bmWidth,bitmapinfo.bmHeight,true);
-
- CRgn rgn;
- CRgn tmpRgn;
- rgn.CreateRectRgn(0,0,bitmapinfo.bmWidth,bitmapinfo.bmHeight);
-
- for(int i=0;i<bitmapinfo.bmWidth;i++)
- {
- for(int j=0;j<bitmapinfo.bmHeight;j++)
- {
- COLORREF cl=dcMem.GetPixel(i,j);
- if(cl== TransColor)
- {
- tmpRgn.CreateRectRgn(i,j,i+1,j+1);
- rgn.CombineRgn(&rgn,&tmpRgn,RGN_XOR);
- tmpRgn.DeleteObject();
- }
- }
- }
-
- SetWindowRgn(rgn,true);
- }
OnInitDialog():
SetRegion(GetDC(), IDB_MASK2, RGB(0, 0, 0));
CenterWindow();
OnPaint():
- CPaintDC dc(this);
- CRect rect;
- GetWindowRect(&rect);
- CDC dcMem;
- dcMem.CreateCompatibleDC(&dc);
- CBitmap bmpBackground;
- bmpBackground.LoadBitmap(IDB_BITMAP_CF);
- BITMAP bitmap;
- bmpBackground.GetBitmap(&bitmap);
- CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
- dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
- }
对话框的标题栏和边界 不要 不然会影响显示