1/*
2 *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_WIN32WINDOW_H_
12#define WEBRTC_BASE_WIN32WINDOW_H_
13
14#if defined(WEBRTC_WIN)
15
16#include "webrtc/base/win32.h"
17
18namespace rtc {
19
20///////////////////////////////////////////////////////////////////////////////
21// Win32Window
22///////////////////////////////////////////////////////////////////////////////
23
24class Win32Window {
25 public:
26  Win32Window();
27  virtual ~Win32Window();
28
29  HWND handle() const { return wnd_; }
30
31  bool Create(HWND parent, const wchar_t* title, DWORD style, DWORD exstyle,
32              int x, int y, int cx, int cy);
33  void Destroy();
34
35  // Call this when your DLL unloads.
36  static void Shutdown();
37
38 protected:
39  virtual bool OnMessage(UINT uMsg, WPARAM wParam, LPARAM lParam,
40                         LRESULT& result);
41
42  virtual bool OnClose() { return true; }
43  virtual void OnNcDestroy() { }
44
45 private:
46  static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam,
47                                  LPARAM lParam);
48
49  HWND wnd_;
50  static HINSTANCE instance_;
51  static ATOM window_class_;
52};
53
54///////////////////////////////////////////////////////////////////////////////
55
56}  // namespace rtc
57
58#endif  // WEBRTC_WIN
59
60#endif  // WEBRTC_BASE_WIN32WINDOW_H_
61