00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
#include "precomp.h"
00012 
#pragma hdrstop
00013 
00014 
#ifdef KANJI
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
BOOL SysHasKanji(
00025     )
00026 {
00027   
return (*(WORD *)&keybdInfo.Begin_First_range != 0x0FEFF ||
00028           *(WORD *)&keybdInfo.Begin_Second_range != 0x0FEFF);
00029 }
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
int KAlign(
00040      
PED ped,
00041     
int ichIn)
00042 {
00043    
int ichCheck;
00044   
int ichOut;
00045   LPSTR lpch;
00046 
00047   
00048 
00049 
00050   
if (ped->
fSingle)
00051       ichOut = ichCheck = 0;
00052   
else
00053       ichOut = ichCheck = ped->mpilich[IlFromIch(ped, ichIn)];
00054 
00055   lpch = 
ECLock(ped) + ichCheck;
00056   
while (ichCheck <= ichIn) {
00057       ichOut = ichCheck;
00058       
if (
IsTwoByteCharPrefix(*(
unsigned char *)lpch))
00059         {
00060           lpch++;
00061           ichCheck++;
00062         }
00063 
00064       lpch++;
00065       ichCheck++;
00066     }
00067   
ECUnlock(ped);
00068   
return (ichOut);
00069 }
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
int KBump(
00081      
PED ped,
00082     
int dch)
00083 {
00084   
unsigned char *pch;
00085 
00086   pch = 
ECLock(ped) + ped->
ichMaxSel;
00087   
if (
IsTwoByteCharPrefix(*pch))
00088       
dch += ped->cxChar;
00089   
ECUnlock(ped);
00090 
00091   
return (
dch);
00092 }
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102 
int KCombine(
00103     HWND hwnd,
00104     
int ch)
00105 {
00106     MSG 
msg;
00107     
int i;
00108 
00109     
00110 
00111 
00112     i = 10;
00113 
00114     
while (!
PeekMessage(&msg, hwnd, WM_CHAR, WM_CHAR, PM_REMOVE)) {
00115         
if (--i == 0)
00116             
return 0;
00117         Yield();
00118     }
00119 
00120     
return (
UINT)ch | ((
UINT)
msg.wParam << 8);
00121 }
00122 
00123 
#endif