使用 C++ 编程,一旦我们通过 GetDC 获得上下文设备以使用。如果不调用ReleaseDC就退出程序会发生什么坏事?

最佳答案

来自 the docs



如您所见,如果其他应用程序可以访问同一 DC,则可能需要

无论如何,将 C++ RAII idiom 用于此类事情是个好主意。考虑这个类:

class ScopedDC
{
   public:
      ScopedDC(HDC handle):handle(handle){}
      ~ScopedDC() { ReleaseDC(handle); }
      HDC get() const {return handle; }
   //disable copying. Same can be achieved by deriving from boost::noncopyable
   private:
      ScopedDC(const ScopedDC&);
      ScopedDC& operator = (const ScopedDC&);

   private:
      HDC handle;
};

有了这个类,你可以这样做:
{
   ScopedDC dc(GetDC());
   //do stuff with dc.get();
}  //DC is automatically released here, even in case of exceptions

关于c++ - 不调用 ReleaseDC 可能会发生什么坏事?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7219640/

10-12 16:17