15,979
社区成员
发帖
与我相关
我的任务
分享
auto s=CRect();
Grid->GetWindowRect(&s);
Grid->GetParent()->ScreeToClient(&s)
pDC->DPtoLp(&s);
auto sourcePos=CRect();
Grid->GetWindowRect(&sourcePos);
Grid->GetParent()->ScreeToClient(&sourcePos)
auto griddevicerect=CRect();
Grid->Grid->GetWindowRect(&griddevicerect);
pDC->DPtoLp(&s);
pDC->StretchBlt(0,0,
sourcePos.Width(),sourcePos.Height() ,
pGrid->GetWindowDC(),
0, 0,
griddevicerect.Width(), griddevicerect.Height(),
SRCCOPY);
这个样子
版主大大說的對。。但我真的不知道怎么调这个坐标。。。调了好长时间了 快崩溃了。
改了一下代码:
//代码1
auto sourcePos=CRect();
Grid->GetWindowRect(&sourcePos);//这个应该是所在整个窗口的坐标
auto griddevice=sourcePos;
Grid->GetParent()->ScreeToClient(&sourcePos)//然后把这个坐标转换成窗口2的坐标
pDC->DPtoLp(&sourcePos);然后再次转换成在窗口2 所在的逻辑坐标
pDC->StretchBlt(sourcePos.left,sourcePos.top,
sourcePos.width(),sourcePos.Height(),
0,0,griddevice.width(),griddevice.Height();
SRCCOPY);
以上代码可以完美的这个缩略图显示在我的控件下方,
不过就是改变窗口的时候导航栏看到的缩略图不一样,还有我今天发现我的另一个问题是,如果我在父窗口二上面在拖一个用pDC画好的椭圆,并且改变的椭圆的位置,我那个表格控件在导航栏的大小还是会发生变化。看下面两个图
这个样到底怎么回事呢。。。
pDC->StretchBlt(sourcePos.left, sourcePos.top,
(sourcePos.Width()), (sourcePos.Height()),
Grid->GetWindowDC(),
0, 0,
griddevicerect.Width(), griddevicerect.Height(),
SRCCOPY);//Grid 是那个控件类,GetWindowDC 换成GetDC()也一样
只有将窗口2拖动到某个位置的时候才能正确显示 ,想不通 拜托大佬 给点提示