1,我在网上找了很多关于截取屏幕的代码,虽然可以截取整个屏幕的图,但是都发现无法像Print Screen键那样全屏截图后还可以把鼠标光标截下来,请问有没有办法可以把鼠标也截取下来?2,new完一个对象后一定要delete的吗?
我找到一个示例工程,里面new了一个继承于CWinThread的线程类对象,然后只要向这个对象发送一个消息,让它响应这个消息,这个线程类对象执行PostQuitMessage(0);后,继而执行ExitInstance(),然后执行自己的虚构函数,这时退出程序后发现竟然没有泄漏内存!!试验了用TerminateThread后,发现只要执行了线程类的虚构函数后,就会自动释放内存,不一定要用delete来释放...如果是这样的话,那么我想问一下,是不是只要执行了类对象的虚构函数就不一定要delete呢?回答一个问题30分,希望各位多多帮忙..

解决方案 »

  1.   

    1.不会吧,这个应该不难你再搜搜吧
    2.当然要调用delete,当然有肯能不是你调用的,一些框架已经帮你调用了,你没看到而已。
    CWinThread有一个Delete函数,你可以再那里打个断点,看看线程结束的时候有没有运行。
    void CWinThread::Delete()
    {
    // delete thread if it is auto-deleting
    if (m_bAutoDelete)
    delete this;
    }
      

  2.   

    2楼,的确,CWinThread执行Delete(),我还真的不知道...还有截取屏幕的程序我找了很多,几乎都是一模一样的做法,Create一个屏幕DC,然后创建一个内存DC,一个兼容位图,基本上做法都一样,但是的确无法截取鼠标..
      

  3.   

    2,new完一个对象后一定要delete的吗?
    ===========
    new之后一定要delete的。对于你所说的情况,CWinThread中有一个成员: m_bAutoDelete,如果设为TRUE的话,它会自己delete的。
      

  4.   

    还有截取屏幕的程序我找了很多,几乎都是一模一样的做法,Create一个屏幕DC,然后创建一个内存DC,一个兼容位图,基本上做法都一样,但是的确无法截取鼠标..
    =============
    传统的方法估计是取不到鼠标的。你找一下用DirectX实现屏幕截图的例子看看。
      

  5.   

    1. 鼠标你要自己画,直接的话是截不下来鼠标的样式的
    2. new和delete是对应的,有些类在自身函数的内部new了,你使用它以后不再需要的时候可能需要自己delete释放,比如GDI+类,有些类你new了以后,不需要自己手动去delete,因为在这些类中自身的函数有delete操作,比如CFrameWnd/CView类的OnNcDestroy函数
      

  6.   

    DirectX的要用到COM..而且我没学过,先不去搞...
    绘制鼠标的话怎样绘制??有什么API函数?
      

  7.   

    顶一下..绘制鼠标的话怎样绘制??有什么API函数?
      

  8.   

    是不是也要用DirectX来绘制鼠标的?有人回答一下吗?