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.
 
 
 
 
 
 

189 lines
5.0 KiB

/****************************************************************************
CMODE.CPP : CMode class implementation which manage conversion mode button
on the Cicero Toolbar
History:
10-JAN-2000 CSLim Created
****************************************************************************/
#include "private.h"
#include "globals.h"
#include "common.h"
#include "korimx.h"
#include "cmode.h"
#include "userex.h"
#include "resource.h"
// {951549C6-9752-4b7d-9B0E-35AEBFF9E446}
const GUID GUID_LBI_KORIMX_CMODE =
{
0x951549c6,
0x9752,
0x4b7d,
{ 0x9b, 0xe, 0x35, 0xae, 0xbf, 0xf9, 0xe4, 0x46 }
};
/*---------------------------------------------------------------------------
CMode::CMode
---------------------------------------------------------------------------*/
CMode::CMode(CToolBar *ptb)
{
WCHAR szText[256];
m_pTb = ptb;
// Set Add/Remove and tootip text
LoadStringExW(g_hInst, IDS_TT_HAN_ENG, szText, sizeof(szText)/sizeof(WCHAR));
InitInfo(CLSID_KorIMX,
GUID_LBI_KORIMX_CMODE,
TF_LBI_STYLE_BTN_BUTTON | TF_LBI_STYLE_SHOWNINTRAY | TF_LBI_STYLE_TEXTCOLORICON,
100,
szText);
SetToolTip(szText);
// Set button text
LoadStringExW(g_hInst, IDS_BUTTON_HAN_ENG, szText, sizeof(szText)/sizeof(WCHAR));
SetText(szText);
}
/*---------------------------------------------------------------------------
CMode::Release
---------------------------------------------------------------------------*/
STDAPI_(ULONG) CMode::Release()
{
long cr;
cr = --m_cRef;
Assert(cr >= 0);
if (cr == 0)
{
delete this;
}
return cr;
}
/*---------------------------------------------------------------------------
CMode::GetIcon
Get Button face Icon
---------------------------------------------------------------------------*/
STDAPI CMode::GetIcon(HICON *phIcon)
{
UINT uiIcon = 0;
static const UINT uidIcons[2][2] =
{
{ IDI_CMODE_ENGLISH, IDI_CMODE_ENGLISHW },
{ IDI_CMODE_HANGUL, IDI_CMODE_HANGULW }
};
if (m_pTb->IsOn() && (m_pTb->GetConversionMode() & TIP_HANGUL_MODE))
uiIcon = 1;
if (IsHighContrastBlack())
uiIcon = uidIcons[uiIcon][1];
else
uiIcon = uidIcons[uiIcon][0];
*phIcon = (HICON)LoadImage(g_hInst, MAKEINTRESOURCE(uiIcon), IMAGE_ICON, 16, 16, LR_LOADMAP3DCOLORS);;
return S_OK;
}
/*---------------------------------------------------------------------------
CMode::InitMenu
No need, this is just toggle button
---------------------------------------------------------------------------*/
STDAPI CMode::InitMenu(ITfMenu *pMenu)
{
return E_NOTIMPL;
}
/*---------------------------------------------------------------------------
CMode::OnMenuSelect
No need, this is just toggle button
---------------------------------------------------------------------------*/
STDAPI CMode::OnMenuSelect(UINT wID)
{
return E_NOTIMPL;
}
//+---------------------------------------------------------------------------
//
// OnLButtonUp
//
//----------------------------------------------------------------------------
HRESULT CMode::OnLButtonUp(const POINT pt, const RECT* prcArea)
{
DWORD dwConvMode;
dwConvMode = m_pTb->GetConversionMode();
// Toggle Hangul mode
dwConvMode ^= TIP_HANGUL_MODE;
SetCMode(dwConvMode);
return S_OK;
}
#if 0
//+---------------------------------------------------------------------------
//
// OnRButtonUp
//
//----------------------------------------------------------------------------
HRESULT CMode::OnRButtonUp(const POINT pt, const RECT* prcArea)
{
HMENU hMenu;
DWORD dwConvMode;
CHAR szText[256];
UINT uiId;
int nRet;
hMenu = CreatePopupMenu();
dwConvMode = GetCMode();
if (dwConvMode & TIP_HANGUL_MODE)
uiId = IDS_ENGLISH_MODE;
else
uiId = IDS_HANGUL_MODE;
// Add Hangul/English mode menu
LoadStringExA(g_hInst, uiId, szText, sizeof(szText)/sizeof(CHAR));
InsertMenu(hMenu, -1, MF_BYPOSITION | MF_STRING, 1, szText);
// Add Cancel menu
LoadStringExA(g_hInst, IDS_CANCEL, szText, sizeof(szText)/sizeof(CHAR));
InsertMenu(hMenu, -1, MF_BYPOSITION | MF_STRING, 0, szText);
nRet = TrackPopupMenuEx(hMenu,
TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD,
pt.x, pt.y, m_pTb->GetOwnerWnd(), NULL);
switch (nRet)
{
case 1:
dwConvMode = GetCMode();
// Toggle Hangul mode
if (dwConvMode & TIP_HANGUL_MODE)
dwConvMode &= ~TIP_HANGUL_MODE;
else
dwConvMode |= TIP_HANGUL_MODE;
SetCMode(dwConvMode);
break;
}
DestroyMenu(hMenu);
return S_OK;
}
#endif