📄 subs.c
字号:
Mylstrcpy (lpSrc0,lpDst0);
lpCompStr->dwCompStrLen = Mylstrlen(lpSrc0);
fChange = TRUE;
break;
case TO_CMODE_HIRAGANA:
lpSrc = ((LPMYCOMPSTR)lpCompStr)->szCompStr;
lpSrc0 = lpSrc;
lpDst0 = lpDst;
while (*lpSrc)
{
*lpDst++ = KataToHira(*lpSrc);
lpSrc++;
}
Mylstrcpy (lpSrc0,lpDst0);
lpCompStr->dwCompStrLen = Mylstrlen(lpSrc0);
fChange = TRUE;
break;
*/
case TO_CMODE_FULLSHAPE:
break;
case TO_CMODE_ROMAN:
break;
}
if (fChange)
{
GnMsg.message = WM_IME_COMPOSITION;
GnMsg.wParam = 0;
GnMsg.lParam = GCS_COMPSTR;
GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
}
GlobalUnlock(hDst);
ccs_exit20:
GlobalFree(hDst);
ccs_exit30:
ImmUnlockIMCC(lpIMC->hCompStr);
ccs_exit40:
ImmUnlockIMC(hIMC);
return;
}
/*****************************************************************************
* *
* IsCompStr( hIMC ) *
* *
*****************************************************************************/
BOOL PASCAL IsCompStr(HIMC hIMC)
{
LPINPUTCONTEXT lpIMC;
LPCOMPOSITIONSTRING lpCompStr;
BOOL fRet = FALSE;
if (!(lpIMC = ImmLockIMC(hIMC)))
return FALSE;
if (ImmGetIMCCSize(lpIMC->hCompStr) < sizeof (COMPOSITIONSTRING))
{
ImmUnlockIMC(hIMC);
return FALSE;
}
lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
fRet = (lpCompStr->dwCompStrLen > 0);
ImmUnlockIMCC(lpIMC->hCompStr);
ImmUnlockIMC(hIMC);
return fRet;
}
/*****************************************************************************
* *
* IsConvertedCompStr( hIMC ) *
* *
*****************************************************************************/
BOOL PASCAL IsConvertedCompStr(HIMC hIMC)
{
LPINPUTCONTEXT lpIMC;
LPCOMPOSITIONSTRING lpCompStr;
BOOL fRet = FALSE;
if (!(lpIMC = ImmLockIMC(hIMC)))
return FALSE;
if (ImmGetIMCCSize(lpIMC->hCompStr) < sizeof (MYCOMPSTR))
{
ImmUnlockIMC(hIMC);
return FALSE;
}
lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
if (lpCompStr->dwCompStrLen > 0)
fRet = (((LPMYCOMPSTR)lpCompStr)->bCompAttr[0] > ATTR_INPUT);
MyDebugPrint((TEXT("CompAttr: %d\n"),((LPMYCOMPSTR)lpCompStr)->bCompAttr[0]));
ImmUnlockIMCC(lpIMC->hCompStr);
ImmUnlockIMC(hIMC);
return fRet;
}
/*****************************************************************************
* *
* IsCandidate( lpIMC ) *
* *
*****************************************************************************/
BOOL PASCAL IsCandidate(LPINPUTCONTEXT lpIMC)
{
LPCANDIDATEINFO lpCandInfo;
BOOL fRet = FALSE;
if (ImmGetIMCCSize(lpIMC->hCandInfo) < sizeof (CANDIDATEINFO))
return FALSE;
lpCandInfo = (LPCANDIDATEINFO)ImmLockIMCC(lpIMC->hCandInfo);
fRet = (lpCandInfo->dwCount > 0);
ImmUnlockIMCC(lpIMC->hCandInfo);
return fRet;
}
/**********************************************************************/
/* */
/* GetMyHKL() */
/* */
/**********************************************************************/
HKL PASCAL GetMyHKL()
{
DWORD dwSize;
DWORD dwi;
HKL hKL = 0;
HKL *lphkl;
dwSize = GetKeyboardLayoutList(0, NULL);
lphkl = (HKL *)GlobalAlloc(GPTR, dwSize * sizeof(DWORD));
if (!lphkl)
return NULL;
GetKeyboardLayoutList(dwSize, lphkl);
for (dwi = 0; dwi < dwSize; dwi++)
{
TCHAR szFile[32];
HKL hKLTemp = *(lphkl + dwi);
ImmGetIMEFileName(hKLTemp, szFile, sizeof(szFile));
if (!lstrcmpi(szFile, MyFileName))
{
hKL = hKLTemp;
goto exit;
}
}
exit:
GlobalFree((HANDLE)lphkl);
return hKL;
}
/*****************************************************************************
* *
* UpdateIndicIcon( hIMC ) *
* *
*****************************************************************************/
void PASCAL UpdateIndicIcon(HIMC hIMC)
{
HWND hwndIndicate;
BOOL fOpen = FALSE;
LPINPUTCONTEXT lpIMC;
if (!hMyKL)
{
hMyKL = GetMyHKL();
if (!hMyKL)
return;
}
#if !defined (NO_TSF)
UpdateLanguageBar ();
#endif
hwndIndicate = FindWindow(INDICATOR_CLASS, NULL);
if (hIMC)
{
DWORD hangul=0;
lpIMC = ImmLockIMC(hIMC);
if (lpIMC)
{
fOpen = lpIMC->fOpen;
// for Dvorak hook in the ui.c
if (fOpen)
hangul = SAENARU_HANGUL;
dwImeFlag &= ~SAENARU_HANGUL;
dwImeFlag |= hangul;
ImmUnlockIMC(hIMC);
}
}
if (IsWindow(hwndIndicate))
{
ATOM atomTip;
atomTip = GlobalAddAtom(TEXT("SaeNaru Open"));
PostMessage(hwndIndicate, INDICM_SETIMEICON,
fOpen ? 1 : (-1), (LPARAM)hMyKL);
PostMessage(hwndIndicate, INDICM_SETIMETOOLTIPS,
fOpen ? atomTip : (-1), (LPARAM)hMyKL);
PostMessage(hwndIndicate, INDICM_REMOVEDEFAULTMENUITEMS,
// fOpen ? (RDMI_LEFT | RDMI_RIGHT) : 0, (LPARAM)hMyKL);
fOpen ? (RDMI_LEFT) : 0, (LPARAM)hMyKL);
}
}
/*****************************************************************************
* *
* lememset( ) *
* *
*****************************************************************************/
void PASCAL lmemset(LPBYTE lp, BYTE b, UINT cnt)
{
register UINT i;
register BYTE bt = b;
for (i=0;i<cnt;i++)
*lp++ = bt;
}
/*****************************************************************************
* *
* MylstrcmpW( ) *
* *
*****************************************************************************/
int PASCAL MylstrcmpW(LPWSTR lp0, LPWSTR lp1)
{
while(*lp0 && *lp1 && (*lp0 == *lp1)) {
lp0++;
lp1++;
}
return (*lp0 - *lp1);
}
/*****************************************************************************
* *
* MylstrcpyW( ) *
* *
*****************************************************************************/
int PASCAL MylstrcpyW(LPWSTR lp0, LPWSTR lp1)
{
int n = 0;
while(*lp1)
{
*lp0 = *lp1;
lp0++;
lp1++;
n++;
}
*lp0 = *lp1;
return n;
}
/*****************************************************************************
* *
* MyCharPrevW( ) *
* *
*****************************************************************************/
LPWSTR PASCAL MyCharPrevW(LPWSTR lpStart, LPWSTR lpCur)
{
LPWSTR lpRet = lpStart;
if (lpCur > lpStart)
lpRet = lpCur - 1;
return lpRet;
}
/*****************************************************************************
* *
* MyCharNextW( ) *
* *
*****************************************************************************/
LPWSTR PASCAL MyCharNextW(LPWSTR lp)
{
return lp++;
}
/*****************************************************************************
* *
* MylstrcpynW( ) *
* *
*****************************************************************************/
LPWSTR PASCAL MylstrcpynW(LPWSTR lp0, LPWSTR lp1, int nCount)
{
int n;
for (n = 0; *lp1 && n < nCount - 1; *lp0++ = *lp1++, n++)
;
*lp0 = L'\0';
return lp0;
}
HFONT CheckNativeCharset(HDC hDC)
{
BOOL bDiffCharSet = FALSE;
LOGFONT lfFont;
HFONT hOldFont;
hOldFont = GetCurrentObject(hDC, OBJ_FONT);
GetObject(hOldFont, sizeof(LOGFONT), &lfFont);
/* 臂裁捞 绝栏搁 扁夯 蔼阑 啊廉柯促 */
if (lfFont.lfCharSet != NATIVE_CHARSET) {
bDiffCharSet = TRUE;
lfFont.lfWeight = FW_NORMAL;
lfFont.lfCharSet = NATIVE_CHARSET;
lfFont.lfFaceName[0] = TEXT('\0');
SelectObject(hDC, CreateFontIndirect(&lfFont));
} else {
hOldFont = NULL;
}
return hOldFont;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -