// // Common.h : Common const and defines // // History: // 14-DEC-2000 CSLim Created #if !defined (__COMMON_H__INCLUDED_) #define __COMMON_H__INCLUDED_ // IME6.1 Root reg key location const TCHAR g_szIMERootKey[] = TEXT("Software\\Microsoft\\IMEKR\\6.1"); const TCHAR g_szIMEDirectoriesKey[] = TEXT("Software\\Microsoft\\IMEKR\\6.1\\Directories"); const TCHAR g_szDictionary[] = TEXT("Dictionary"); // Basic Hanja lex full path with file name "IMEKR.LEX" const TCHAR g_szDicPath[] = TEXT("DictionaryPath"); // Extended lex path const TCHAR g_szHelpPath[] = TEXT("HelpPath"); // IME Properties reg values const TCHAR g_szXWEnable[] = TEXT("ISO10646"); const TCHAR g_szIMEKL[] = TEXT("InputMethod"); const TCHAR g_szCompDel[] = TEXT("CompDel"); const TCHAR g_szStatusPos[] = TEXT("StatusPos"); const TCHAR g_szCandPos[] = TEXT("CandPos"); const TCHAR g_szStatusButtons[] = TEXT("StatusButtons"); const TCHAR g_szLexFileNameKey[] = TEXT("LexFile"); const TCHAR g_szEnableK1Hanja[] = TEXT("KSC5657"); const TCHAR g_szEnableCandUnicodeTT[] = TEXT("CandUnicodeTT"); // IME Main version key const TCHAR g_szVersionKey[] = TEXT("Software\\Microsoft\\IMEKR"); const TCHAR g_szVersion[] = TEXT("version"); #ifdef _DEBUG #define SZ_TIPSERVERNAME TEXT("DBGKRCIC") #define SZ_TIPNAME L"DBGKRCIC" #define SZ_TIPDISPNAME L"Korean Input System (IME 2002) (Debug)" #define SZ_TIPMODULENAME L"imekrcic.dll" #else /* !DEBUG */ #define SZ_TIPSERVERNAME TEXT("IMEKRCIC") #define SZ_TIPNAME L"IMEKRCIC" #define SZ_TIPDISPNAME L"Korean Input System (IME 2002)" #define SZ_TIPMODULENAME L"imekrcic.dll" #endif /* !DEBUG */ // Korean TIP CLSID // {766A2C15-B226-4fd6-B52A-867B3EBF38D2} DEFINE_GUID(CLSID_KorIMX, 0x766A2C15, 0xB226, 0x4FD6, 0xb5, 0x2a, 0x86, 0x7b, 0x3e, 0xbf, 0x38, 0xd2); // Korean TIP profile // {83C18F16-5DD8-4157-A34A-3C5AB2089E11} DEFINE_GUID(GUID_Profile, 0x83c18f16, 0x5dd8, 0x4157, 0xa3, 0x4a, 0x3c, 0x5a, 0xb2, 0x8, 0x9e, 0x11); // // generic COM stuff // #define SafeRelease(punk) \ { \ if ((punk) != NULL) \ { \ (punk)->Release(); \ } \ } #define SafeReleaseClear(punk) \ { \ if ((punk) != NULL) \ { \ (punk)->Release(); \ (punk) = NULL; \ } \ } // // SAFECAST(obj, type) // // This macro is extremely useful for enforcing strong typechecking on other // macros. It generates no code. // // Simply insert this macro at the beginning of an expression list for // each parameter that must be typechecked. For example, for the // definition of MYMAX(x, y), where x and y absolutely must be integers, // use: // // #define MYMAX(x, y) (SAFECAST(x, int), SAFECAST(y, int), ((x) > (y) ? (x) : (y))) // // #define SAFECAST(_obj, _type) (((_type)(_obj)==(_obj)?0:0), (_type)(_obj)) #ifndef ARRAYSIZE #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0])) #endif #endif // !defined (__COMMON_H__INCLUDED_)