1 // Copyright (c) 2012 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 BASE_WIN_TEXT_SERVICES_MESSAGE_FILTER_H_ 6 #define BASE_WIN_TEXT_SERVICES_MESSAGE_FILTER_H_ 7 8 #include <msctf.h> 9 #include <Windows.h> 10 11 #include "base/memory/scoped_ptr.h" 12 #include "base/message_loop/message_pump_win.h" 13 #include "base/win/metro.h" 14 #include "base/win/scoped_comptr.h" 15 16 namespace base { 17 namespace win { 18 19 // TextServicesMessageFilter extends MessageFilter with methods that are using 20 // Text Services Framework COM component. 21 class BASE_EXPORT TextServicesMessageFilter 22 : public base::MessagePumpForUI::MessageFilter { 23 public: 24 TextServicesMessageFilter(); 25 virtual ~TextServicesMessageFilter(); 26 virtual BOOL DoPeekMessage(MSG* msg, 27 HWND window_handle, 28 UINT msg_filter_min, 29 UINT msg_filter_max, 30 UINT remove_msg) OVERRIDE; 31 virtual bool ProcessMessage(const MSG& msg) OVERRIDE; 32 33 bool Init(); 34 35 private: 36 TfClientId client_id_; 37 bool is_initialized_; 38 base::win::ScopedComPtr<ITfThreadMgr> thread_mgr_; 39 base::win::ScopedComPtr<ITfMessagePump> message_pump_; 40 base::win::ScopedComPtr<ITfKeystrokeMgr> keystroke_mgr_; 41 42 DISALLOW_COPY_AND_ASSIGN(TextServicesMessageFilter); 43 }; 44 45 } // namespace win 46 } // namespace base 47 48 #endif // BASE_WIN_TEXT_SERVICES_MESSAGE_FILTER_H_ 49