{
if ( m_bcapture )
{
this->clienttoscreen(&point);//对话框坐标转屏幕坐标
cwnd* pwnd = getdlgitem(idc_static);
pwnd->screentoclient(&point);//再转控件坐标
crect oldrc(m_pt, m_pic); //控件中坐标
pwnd->clienttoscreen(&oldrc);// 转换为屏幕坐标
this->screentoclient(&oldrc);
//计算新位置
m_pt.x = point.x - m_off.cx;
m_pt.y = point.y - m_off.cy;
this->invalidaterect(oldrc, false);
}
cdialog::onmousemove(nflags, point);
}
void cmydlg::onlbuttonup(uint nflags, cpoint point)
{
releasecapture();
m_bcapture=false;
cdialog::onlbuttonup(nflags, point);
}
void cmydlg::onpaint()
{
//添加部分
else
{
cwnd* pwnd = getdlgitem(idc_static);
crect rc;
pwnd->getclientrect(&rc); //获得idc_static控件大小
//创建与idc_static控件大小相同的背景位图
cbitmap bitmap;
bitmap.createcompatiblebitmap(&dc, rc.width(), rc.height());
//创建 绘制背景的内存dc
cpaintdc dc(pwnd); //控件dc
cdc memdc; //绘制背景的内存dc
memdc.createcompatibledc(&dc);
memdc.selectobject(&bitmap); //将背景位图选入
memdc.fillsolidrect(0,0,rc.width(), rc.height(), rgb(255,255,255)); //填充背景色
memdc.drawedge(&rc, edge_bump, bf_rect); //四周有边框
//你可以这里用memdc绘制背景图案
//创建拖动图片的内存dc
cdc picdc;
picdc.createcompatibledc(&memdc);
picdc.selectobject(&m_bitmap);
memdc.bitblt(m_pt.x, m_pt.y, m_pic.cx, m_pic.cy, &picdc, 0, 0, srccopy); //bitblit到绘制背景的dc上
dc.bitblt(0, 0, rc.width(), rc.height(), &memdc, 0, 0, srccopy); //最后bitblt到控件dc上
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36845-2.html
太绝对了
~
即使是后面一条
看了很多遍