/**************************************************************************** HJMODE.CPP : HJMode class managing Hanja button on the Cicero Toolbar History: 25-FEB-2000 CSLim Created ****************************************************************************/ #include "precomp.h" #include "hjmode.h" #include "gdata.h" #include "winex.h" #include "resource.h" // {F7410340-28E0-4aeb-ADBC-C579FD00B43D} const GUID GUID_LBI_KORIME_HJMODE = { 0xf7410340, 0x28e0, 0x4aeb, { 0xad, 0xbc, 0xc5, 0x79, 0xfd, 0x0, 0xb4, 0x3d } }; /*--------------------------------------------------------------------------- HJMode::HJMode ---------------------------------------------------------------------------*/ HJMode::HJMode(CToolBar *ptb) { WCHAR szText[256]; szText[0] = L'\0'; m_pTb = ptb; // Set Add/Remove text and tootip text OurLoadStringW(vpInstData->hInst, IDS_STATUS_TT_HANJA_CONV, szText, sizeof(szText)/sizeof(WCHAR)); InitInfo(CLSID_SYSTEMLANGBARITEM_KEYBOARD, GUID_LBI_KORIME_HJMODE, TF_LBI_STYLE_BTN_BUTTON | TF_LBI_STYLE_TEXTCOLORICON, 220, szText); SetToolTip(szText); // Set button text szText[0] = L'\0'; OurLoadStringW(vpInstData->hInst, IDS_STATUS_BUTTON_HANJA_CONV, szText, sizeof(szText)/sizeof(WCHAR)); SetText(szText); } /*--------------------------------------------------------------------------- HJMode::Release ---------------------------------------------------------------------------*/ STDAPI_(ULONG) HJMode::Release() { long cr; cr = --m_cRef; DbgAssert(cr >= 0); if (cr == 0) { delete this; } return cr; } /*--------------------------------------------------------------------------- HJMode::GetIcon Get Button face Icon ---------------------------------------------------------------------------*/ STDAPI HJMode::GetIcon(HICON *phIcon) { UINT uiIcon; if (IsHighContrastBlack()) uiIcon = IDI_CMODE_HANJAW; else uiIcon = IDI_CMODE_HANJA; *phIcon = (HICON)LoadImage(vpInstData->hInst, MAKEINTRESOURCE(uiIcon), IMAGE_ICON, 16, 16, LR_LOADMAP3DCOLORS); return S_OK; } /*--------------------------------------------------------------------------- HJMode::InitMenu No need, this is just toggle button ---------------------------------------------------------------------------*/ STDAPI HJMode::InitMenu(ITfMenu *pMenu) { return E_NOTIMPL; } /*--------------------------------------------------------------------------- HJMode::OnMenuSelect No need, this is just toggle button ---------------------------------------------------------------------------*/ STDAPI HJMode::OnMenuSelect(UINT wID) { return E_NOTIMPL; } /*--------------------------------------------------------------------------- HJMode::OnLButtonUp ---------------------------------------------------------------------------*/ HRESULT HJMode::OnLButtonUp(const POINT pt, const RECT* prcArea) { keybd_event(VK_HANJA, 0, 0, 0); keybd_event(VK_HANJA, 0, KEYEVENTF_KEYUP, 0); return S_OK; } /*--------------------------------------------------------------------------- HJMode::OnRButtonUp ---------------------------------------------------------------------------*/ HRESULT HJMode::OnRButtonUp(const POINT pt, const RECT* prcArea) { /* HMENU hMenu; DWORD dwConvMode; hMenu = CreatePopupMenu(); char *pszStatus = (GetCMode() & TIP_JUNJA_MODE) ? "Banja mode" : "Junja mode"; InsertMenu(hMenu, -1, MF_BYPOSITION | MF_STRING, 1, pszStatus); InsertMenu(hMenu, -1, MF_BYPOSITION | MF_STRING, 0, "Cancel"); int nRet = TrackPopupMenuEx(hMenu, TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, pt.x, pt.y, m_pTb->GetOwnerWnd(), NULL); switch (nRet) { case 1: dwConvMode = GetCMode(); // Toggle Full/Half mode if (dwConvMode & TIP_JUNJA_MODE) dwConvMode &= ~TIP_JUNJA_MODE; else dwConvMode |= TIP_JUNJA_MODE; SetCMode(dwConvMode); break; } DestroyMenu(hMenu); */ return S_OK; }