mfc自己建单文档加载的bmp图像,怎么用鼠标进行拖拽移动。 求思路或代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可使用是Picture control,LoadImage加载bmp路径,重写CStatic类,处理WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE消息来处理鼠标拖动图片 就是不用Picture control和loadImage,直接在单文档里移动 如果不想用Picture control 那么直接在OnDraw()里面画就行了吧OnDraw( CDC* pDC ){ CRect rtClient; GetClientRect(rtClient); CDC memdc; memdc.CreateCompatibleDC(pDC); //依附窗口pDC创建兼容内存DC CBitmap bmp; bmp.CreateCompatibleBitmap(pDC,rtClient.Width(),rtClient.Height()); //创建兼容位图 memdc.SelectObject(&bmp); CBitmap m_bitmap; m_bitmap.LoadBitmap(IDB_BM); // IDB_BM: 图片资源ID CDC dcMem; dcMem.CreateCompatibleDC( pDC); dcMem.SelectObject(&m_bitmap); memdc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY); CPoint PtCursour(0,0); // 鼠标位置 要做判断是否在客户区里,这里我默认了0,0 pDC->BitBlt(PtCursour.x,PtCursour.y,rect.Width(),rect.Height(), &memdc,0,0,SRCCOPY);//将内存中的图拷贝到屏幕上进行显示}这样子 不会闪烁,不会残留之前拖动留下的图片痕迹 同样还需要响应WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE 这3个消息 来根据鼠标消息 移动图片 才能完全实现你想要的功能 不好意思有个笔误 上面rect 全部改成rtClient 看看这篇文章你一定满意http://wenku.baidu.com/view/0bfae5cfa1c7aa00b52acb83.html 去这里看看http://topic.csdn.net/u/20081125/20/22ad0f48-2fbb-413c-9828-f280384032a1.html对于代码中的很多局部变量也可以声明为类得成员变量,只初始化一次。 看看这个http://blog.csdn.net/xianglitian/archive/2010/11/20/6023656.aspx 有win64吗 如何判断最前端的面 菜鸟问个简单问题 救急 ~~谢谢~~~ 请教Unhandled exception in *.exe(*.DLL):0xC0000005:AccessViolation 我自定义了一个继承于树控件的类,这个函数无法在构造函数内执行 一个迷茫的人! 有谁有SQL server2000个人 版吗?或者知道下载地址,我下了个可是不能装 用什么函数或是什么方法可以得到当月的天数为几天? 哪有TrueDBGrid 7.0? 有人能为我解释一下以下代码(进度条控制)是什么意思么? 请高手指点如何获取某一个已打开程序的窗口,谢谢!!!
如果不想用Picture control 那么直接在OnDraw()里面画就行了吧
OnDraw( CDC* pDC )
{
CRect rtClient;
GetClientRect(rtClient);
CDC memdc;
memdc.CreateCompatibleDC(pDC); //依附窗口pDC创建兼容内存DC
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rtClient.Width(),rtClient.Height()); //创建兼容位图
memdc.SelectObject(&bmp);
CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_BM); // IDB_BM: 图片资源ID
CDC dcMem;
dcMem.CreateCompatibleDC( pDC);
dcMem.SelectObject(&m_bitmap);
memdc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);
CPoint PtCursour(0,0); // 鼠标位置 要做判断是否在客户区里,这里我默认了0,0
pDC->BitBlt(PtCursour.x,PtCursour.y,rect.Width(),rect.Height(),
&memdc,0,0,SRCCOPY);//将内存中的图拷贝到屏幕上进行显示}
这样子 不会闪烁,不会残留之前拖动留下的图片痕迹
同样还需要响应WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE 这3个消息 来根据鼠标消息 移动图片
才能完全实现你想要的功能
http://wenku.baidu.com/view/0bfae5cfa1c7aa00b52acb83.html
对于代码中的很多局部变量也可以声明为类得成员变量,只初始化一次。
http://blog.csdn.net/xianglitian/archive/2010/11/20/6023656.aspx