1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_WIN_SCOPED_GDI_OBJECT_H_
6 #define BASE_WIN_SCOPED_GDI_OBJECT_H_
10 #include "base/basictypes.h"
11 #include "base/logging.h"
16 // Like ScopedHandle but for GDI objects.
18 class ScopedGDIObject {
20 ScopedGDIObject() : object_(NULL) {}
21 explicit ScopedGDIObject(T object) : object_(object) {}
32 if (object_ && object != object_)
37 ScopedGDIObject& operator=(T object) {
48 operator T() { return object_; }
53 DeleteObject(object_);
57 DISALLOW_COPY_AND_ASSIGN(ScopedGDIObject);
60 // An explicit specialization for HICON because we have to call DestroyIcon()
61 // instead of DeleteObject() for HICON.
63 void ScopedGDIObject<HICON>::Close() {
68 // Typedefs for some common use cases.
69 typedef ScopedGDIObject<HBITMAP> ScopedBitmap;
70 typedef ScopedGDIObject<HRGN> ScopedRegion;
71 typedef ScopedGDIObject<HFONT> ScopedHFONT;
72 typedef ScopedGDIObject<HICON> ScopedHICON;
77 #endif // BASE_WIN_SCOPED_GDI_OBJECT_H_