Home | History | Annotate | Download | only in win
      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