1 // Copyright (c) 2009 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. 4 5 #ifndef TOOLS_MEMORY_WATCHER_HOTKEY_H_ 6 #define TOOLS_MEMORY_WATCHER_HOTKEY_H_ 7 8 #include "ui/gfx/rect.h" 9 #include "ui/gfx/win/window_impl.h" 10 11 // HotKey handler. 12 // Programs wishing to register a hotkey can use this. 13 class HotKeyHandler : public gfx::WindowImpl { 14 public: 15 HotKeyHandler(UINT modifiers, UINT vk) 16 : modifiers_(modifiers), 17 vkey_(vk) { 18 Start(); 19 } 20 ~HotKeyHandler() { Stop(); } 21 22 BEGIN_MSG_MAP_EX(HotKeyHandler) 23 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey) 24 END_MSG_MAP() 25 26 private: 27 static const int hotkey_id = 0x0000baba; 28 29 bool Start() { 30 set_window_style(WS_POPUP); 31 Init(NULL, gfx::Rect()); 32 return RegisterHotKey(hwnd(), hotkey_id, modifiers_, vkey_) == TRUE; 33 } 34 35 void Stop() { 36 UnregisterHotKey(hwnd(), hotkey_id); 37 DestroyWindow(hwnd()); 38 } 39 40 // Handle the registered Hotkey being pressed. 41 virtual LRESULT OnHotKey(UINT /*uMsg*/, WPARAM /*wParam*/, 42 LPARAM /*lParam*/, BOOL& bHandled) = 0; 43 44 UINT modifiers_; 45 UINT vkey_; 46 }; 47 48 #endif // TOOLS_MEMORY_WATCHER_HOTKEY_H_ 49