Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
1.8 KiB

/*++
Copyright (c) 1985 - 1999, Microsoft Corporation
Module Name:
cime.h
Abstract:
This file defines the IMCLock / IMCCLock Class.
Author:
Revision History:
Notes:
--*/
#ifndef CIME_H
#define CIME_H
#include "idebug.h"
#include "template.h"
class CAImeContext;
#define _ENABLE_CAIME_CONTEXT_
#include "imclock.h"
const int MAXCAND = 256;
const int CANDPERPAGE = 9;
class IMCLock : public _IMCLock
{
public:
IMCLock(HIMC hImc=NULL);
virtual ~IMCLock() {
if (m_inputcontext) {
_UnlockIMC(m_himc);
}
}
// virtual InternalIMCCLock
HRESULT _LockIMC(HIMC hIMC, INPUTCONTEXT_AIMM12** ppIMC);
HRESULT _UnlockIMC(HIMC hIMC);
void InitContext();
BOOL ClearCand();
void GenerateMessage();
BOOL ValidCompositionString();
private:
// Do not allow to make a copy
IMCLock(IMCLock&) { }
};
class InternalIMCCLock : public _IMCCLock
{
public:
InternalIMCCLock(HIMCC hImcc = NULL);
virtual ~InternalIMCCLock() {
if (m_pimcc) {
_UnlockIMCC(m_himcc);
}
}
// virtual InternalIMCCLock
HRESULT _LockIMCC(HIMCC hIMCC, void** ppv);
HRESULT _UnlockIMCC(HIMCC hIMCC);
private:
// Do not allow to make a copy
InternalIMCCLock(InternalIMCCLock&) { }
};
template <class T>
class IMCCLock : public InternalIMCCLock
{
public:
IMCCLock(HIMCC hImcc) : InternalIMCCLock(hImcc) {};
T* GetBuffer() { return (T*)m_pimcc; }
operator T*() { return (T*)m_pimcc; }
T* operator->() {
ASSERT(m_pimcc);
return (T*)m_pimcc;
}
private:
// Do not allow to make a copy
IMCCLock(IMCCLock<T>&) { }
};
#endif // CIME_H