使用 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/