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.
|
|
/****************************************************************************/ /* */ /* ECKANJI.C - */ /* */ /* Copyright (c) 1985 - 1999, Microsoft Corporation */ /* */ /* Kanji Support Routines */ /* */ /****************************************************************************/
#include "precomp.h"
#pragma hdrstop
#ifdef KANJI
/***************************************************************************\
* SysHasKanji * * <brief description> * * History: \***************************************************************************/
BOOL SysHasKanji( ) { return (*(WORD *)&keybdInfo.Begin_First_range != 0x0FEFF || *(WORD *)&keybdInfo.Begin_Second_range != 0x0FEFF); }
/***************************************************************************\
* KAlign * * Make sure the given char isn't the index of the second byte of a Kanji word. * * History: \***************************************************************************/
int KAlign( PED ped, int ichIn) { int ichCheck; int ichOut; LPSTR lpch;
/*
* ichOut chases ichCheck until ichCheck > ichIn */ if (ped->fSingle) ichOut = ichCheck = 0; else ichOut = ichCheck = ped->mpilich[IlFromIch(ped, ichIn)];
lpch = ECLock(ped) + ichCheck; while (ichCheck <= ichIn) { ichOut = ichCheck; if (IsTwoByteCharPrefix(*(unsigned char *)lpch)) { lpch++; ichCheck++; }
lpch++; ichCheck++; } ECUnlock(ped); return (ichOut); }
/***************************************************************************\
* KBump * * If ichMaxSel references Kanji prefix, bump dch by cxChar to bypass prefix * char. This routine is called only from DoKey in ea1.asm. * * History: \***************************************************************************/
int KBump( PED ped, int dch) { unsigned char *pch;
pch = ECLock(ped) + ped->ichMaxSel; if (IsTwoByteCharPrefix(*pch)) dch += ped->cxChar; ECUnlock(ped);
return (dch); }
/***************************************************************************\
* KCombine * * Kanji prefix byte was found in bytestream queue. Get next byte and combine. * * History: \***************************************************************************/
int KCombine( HWND hwnd, int ch) { MSG msg; int i;
/*
* Loop counter to avoid the infinite loop. */ i = 10;
while (!PeekMessage(&msg, hwnd, WM_CHAR, WM_CHAR, PM_REMOVE)) { if (--i == 0) return 0; Yield(); }
return (UINT)ch | ((UINT)msg.wParam << 8); }
#endif
|