本帖最后由 d1wwww23123123 于 2012-08-27 20:05:20 编辑

解决方案 »

  1.   

    可以用两个DC实现。
    屏幕图像保存到 DC1,
    矩形操作在对话框DC2,
    同时显示到全屏对话框(DC2),可以用半透明通道(AlphaBlend)阴影遮罩对话DC2,类似QQ截图阴影遮罩。橡皮筋不要 Invalidate,他会自动有一个虚线显示当前矩形。
    获得橡皮筋所选矩形,到DC1相对应的矩形获得图片。并填充当前对话框DC中的选择矩形部分。
      

  2.   

    CopyScreenToBitmap的结果要在OnPaint中绘制
      

  3.   

    把Invalidate()注释掉之后,画橡皮筋时有个虚线框,但是松开鼠标,矩形就消失了,点击区域区域倒是可以拖动矩形。
      

  4.   

    的确,按我的程序,此时双击已经能复制到剪切板了。但是不能进行对矩形的调整,只有画出橡皮筋矩形的时候才能在边框各个位置进行不同调整。能给我说一下为什么执行Invalidate()后,对话框背景没有显示,但却画出矩形了么?
    看说明是Invalidate()使用户区无效从而迫使窗口进行重绘,应该会执行OnPaint();
    而初始化窗口的时候执行OnPaint()是可以将屏幕设为对话框背景的,为什么现在就不行了?