// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CAPTURE_SYSTEM_MESSAGE_WINDOW_WIN_H_ #define MEDIA_CAPTURE_SYSTEM_MESSAGE_WINDOW_WIN_H_ #include #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "media/base/media_export.h" namespace media { class MEDIA_EXPORT SystemMessageWindowWin { public: SystemMessageWindowWin(); virtual ~SystemMessageWindowWin(); virtual LRESULT OnDeviceChange(UINT event_type, LPARAM data); private: void Init(); LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); static LRESULT CALLBACK WndProcThunk(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { SystemMessageWindowWin* msg_wnd = reinterpret_cast( GetWindowLongPtr(hwnd, GWLP_USERDATA)); if (msg_wnd) return msg_wnd->WndProc(hwnd, message, wparam, lparam); return ::DefWindowProc(hwnd, message, wparam, lparam); } HMODULE instance_; HWND window_; class DeviceNotifications; scoped_ptr device_notifications_; DISALLOW_COPY_AND_ASSIGN(SystemMessageWindowWin); }; } // namespace media #endif // MEDIA_CAPTURE_SYSTEM_MESSAGE_WINDOW_WIN_H_