mfc中,怎么能让设置的窗口区域在客户区内显示?
创建一个对话框程序载入一个自己创建的位图最后设置窗口区域的时候,为什么载入的位图是在标题栏那里开始的?下面是全部代码CBitmapbmp;//创建一个位图对象bmp.Lo...
创建一个对话框程序
载入一个自己创建的位图
最后设置窗口区域的时候,为什么载入的位图是在标题栏那里开始的?
下面是全部代码
CBitmap bmp; //创建一个位图对象
bmp.LoadBitmapW(IDB_BITMAP2); //载入自己创建的位图
CDC * pDC = GetWindowDC(); //创建一个指向包括标题栏的DC指针
CDC newDC; //创建一个DC
newDC.CreateCompatibleDC(pDC); //和主DC兼容
newDC.SelectObject(&bmp); //替换位图
CRect rw; //创建一个矩形结构
GetClientRect(&rw); //获取窗口客户区的坐标。
CRgn r1, r2;
r1.CreateRectRgnIndirect(&rw); //创建一个矩形对象并存储在CRgn对象中。
//创建一个循环,获得位图区域
for (int x=0; x<rw.right; x++)
{
for (int y=0; y<rw.bottom; y++)
{
if (newDC.GetPixel(x, y) == newDC.GetPixel(0,0))
{
r2.CreateRectRgn(x, y, x+1, y+1);
r1.CombineRgn(&r1, &r2, RGN_XOR);
r2.DeleteObject();
}
}
}
CBrush bsh(0xff);
pDC->FillRgn(&r1, &bsh);
SetWindowRgn(r1, 1);
} 展开
载入一个自己创建的位图
最后设置窗口区域的时候,为什么载入的位图是在标题栏那里开始的?
下面是全部代码
CBitmap bmp; //创建一个位图对象
bmp.LoadBitmapW(IDB_BITMAP2); //载入自己创建的位图
CDC * pDC = GetWindowDC(); //创建一个指向包括标题栏的DC指针
CDC newDC; //创建一个DC
newDC.CreateCompatibleDC(pDC); //和主DC兼容
newDC.SelectObject(&bmp); //替换位图
CRect rw; //创建一个矩形结构
GetClientRect(&rw); //获取窗口客户区的坐标。
CRgn r1, r2;
r1.CreateRectRgnIndirect(&rw); //创建一个矩形对象并存储在CRgn对象中。
//创建一个循环,获得位图区域
for (int x=0; x<rw.right; x++)
{
for (int y=0; y<rw.bottom; y++)
{
if (newDC.GetPixel(x, y) == newDC.GetPixel(0,0))
{
r2.CreateRectRgn(x, y, x+1, y+1);
r1.CombineRgn(&r1, &r2, RGN_XOR);
r2.DeleteObject();
}
}
}
CBrush bsh(0xff);
pDC->FillRgn(&r1, &bsh);
SetWindowRgn(r1, 1);
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询