1 #ifndef IMMMODEL_H
2 #define IMMMODEL_H
3 
4 #include <windows.h>
5 #include <immdev.h>
6 #include "ExtraStructs.h"
7 
8 class ImmModel
9 {
10 public:
11 	static ImmModel* open(HIMC h);
12 	static void close(void);
13 
14 	LPINPUTCONTEXT getIMC(void);
15 	LPCOMPOSITIONSTRING getCompStr(void);
16 	LPMYPRIVATE getMyPrivate(void);
17 
18 protected:
19 	ImmModel(HIMC h);
20 	~ImmModel(void);
21 
22 private:
23 	static ImmModel* m_self;
24 
25 	static HIMC m_hIMC;
26 
27 	static LPINPUTCONTEXT m_lpIMC;
28 	static LPCOMPOSITIONSTRING m_lpCompStr;
29 	static LPMYPRIVATE m_lpMyPrivate;
30 
31 	LPINPUTCONTEXT lockIMC(void);
32 	LPCOMPOSITIONSTRING lockCompStr(void);
33 	LPMYPRIVATE lockMyPrivate(void);
34 
35 	void unlockIMC(void);
36 	void unlockCompStr(void);
37 	void unlockMyPrivate(void);
38 };
39 
40 #endif
41