求思路或代码

解决方案 »

  1.   

    你可使用是Picture control,LoadImage加载bmp路径,重写CStatic类,处理WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE消息来处理鼠标拖动图片
      

  2.   

    就是不用Picture control和loadImage,直接在单文档里移动
      

  3.   


    如果不想用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个消息 来根据鼠标消息 移动图片 
    才能完全实现你想要的功能
      

  4.   

    不好意思有个笔误 上面rect 全部改成rtClient
      

  5.   

    看看这篇文章你一定满意
    http://wenku.baidu.com/view/0bfae5cfa1c7aa00b52acb83.html
      

  6.   

    去这里看看http://topic.csdn.net/u/20081125/20/22ad0f48-2fbb-413c-9828-f280384032a1.html
    对于代码中的很多局部变量也可以声明为类得成员变量,只初始化一次。
      

  7.   

    看看这个
    http://blog.csdn.net/xianglitian/archive/2010/11/20/6023656.aspx