forked from rime/weasel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LanguageBar.h
47 lines (40 loc) · 1.42 KB
/
LanguageBar.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#pragma once
#include <msctf.h>
#include <WeaselUI.h>
class CLangBarItemButton : public ITfLangBarItemButton, public ITfSource {
public:
CLangBarItemButton(com_ptr<WeaselTSF> pTextService,
REFGUID guid,
weasel::UIStyle& style);
~CLangBarItemButton();
/* IUnknown */
STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
/* ITfLangBarItem */
STDMETHODIMP GetInfo(TF_LANGBARITEMINFO* pInfo);
STDMETHODIMP GetStatus(DWORD* pdwStatus);
STDMETHODIMP Show(BOOL fShow);
STDMETHODIMP GetTooltipString(BSTR* pbstrToolTip);
/* ITfLangBarItemButton */
STDMETHODIMP OnClick(TfLBIClick click, POINT pt, const RECT* prcArea);
STDMETHODIMP InitMenu(ITfMenu* pMenu);
STDMETHODIMP OnMenuSelect(UINT wID);
STDMETHODIMP GetIcon(HICON* phIcon);
STDMETHODIMP GetText(BSTR* pbstrText);
/* ITfSource */
STDMETHODIMP AdviseSink(REFIID riid, IUnknown* punk, DWORD* pdwCookie);
STDMETHODIMP UnadviseSink(DWORD dwCookie);
void UpdateWeaselStatus(weasel::Status stat);
void SetLangbarStatus(DWORD dwStatus, BOOL fSet);
private:
GUID _guid;
com_ptr<WeaselTSF> _pTextService;
com_ptr<ITfLangBarItemSink> _pLangBarItemSink;
LONG _cRef; /* COM Reference count */
DWORD _status;
bool ascii_mode;
weasel::UIStyle& _style;
std::wstring _current_schema_zhung_icon;
std::wstring _current_schema_ascii_icon;
};