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.
 
 
 
 
 
 

130 lines
3.8 KiB

/****************************************************************************
SKBDMODE.CPP : CSoftKbdMode class implementation which manage Soft Keyboard
button on the Cicero Toolbar
History:
19-SEP-2000 CSLim Created
****************************************************************************/
#include "private.h"
#include "globals.h"
#include "common.h"
#include "korimx.h"
#include "skbdmode.h"
#include "userex.h"
#include "immxutil.h"
#include "resource.h"
// {C7BAA1A7-5403-4596-8fe6-DC50C96B2FDD}
const GUID GUID_LBI_KORIMX_SKBDMODE =
{
0xC7BAA1A7,
0x5403,
0x4596,
{ 0x8f, 0xe6, 0xdc, 0x50, 0xc9, 0x6b, 0x2f, 0xdd }
};
/*---------------------------------------------------------------------------
CSoftKbdMode::CSoftKbdMode
---------------------------------------------------------------------------*/
CSoftKbdMode::CSoftKbdMode(CToolBar *ptb)
{
WCHAR szText[256];
m_pTb = ptb;
// Set Add/Remove and tootip text
LoadStringExW(g_hInst, IDS_BUTTON_SOFTKBD, szText, sizeof(szText)/sizeof(WCHAR));
InitInfo(CLSID_KorIMX,
GUID_LBI_KORIMX_SKBDMODE,
TF_LBI_STYLE_BTN_TOGGLE | TF_LBI_STYLE_HIDDENBYDEFAULT,
130,
szText);
SetToolTip(szText);
SetText(szText);
}
/*---------------------------------------------------------------------------
CSoftKbdMode::Release
---------------------------------------------------------------------------*/
STDAPI_(ULONG) CSoftKbdMode::Release()
{
long cr;
cr = --m_cRef;
Assert(cr >= 0);
if (cr == 0)
{
delete this;
}
return cr;
}
/*---------------------------------------------------------------------------
CSoftKbdMode::GetIcon
Get Button face Icon
---------------------------------------------------------------------------*/
STDAPI CSoftKbdMode::GetIcon(HICON *phIcon)
{
*phIcon = (HICON)LoadImage(g_hInst, MAKEINTRESOURCE(IDI_SOFTKBD), IMAGE_ICON, 16, 16, LR_LOADMAP3DCOLORS);;
return S_OK;
}
/*---------------------------------------------------------------------------
CSoftKbdMode::InitMenu
No need, this is just toggle button
---------------------------------------------------------------------------*/
STDAPI CSoftKbdMode::InitMenu(ITfMenu *pMenu)
{
return E_NOTIMPL;
}
/*---------------------------------------------------------------------------
CSoftKbdMode::OnMenuSelect
No need, this is just toggle button
---------------------------------------------------------------------------*/
STDAPI CSoftKbdMode::OnMenuSelect(UINT wID)
{
return E_NOTIMPL;
}
/*---------------------------------------------------------------------------
CSoftKbdMode::OnLButtonUp
---------------------------------------------------------------------------*/
HRESULT CSoftKbdMode::OnLButtonUp(const POINT pt, const RECT* prcArea)
{
return ToggleCompartmentDWORD(m_pTb->m_pimx->GetTID(),
m_pTb->m_pimx->GetTIM(),
GUID_COMPARTMENT_KOR_SOFTKBD_OPENCLOSE,
FALSE);
}
/*---------------------------------------------------------------------------
CSoftKbdMode::UpdateToggle
No need, this is just toggle button
---------------------------------------------------------------------------*/
void CSoftKbdMode::UpdateToggle()
{
DWORD dwState = 0;
GetCompartmentDWORD(m_pTb->m_pimx->GetTIM(),
GUID_COMPARTMENT_KOR_SOFTKBD_OPENCLOSE,
&dwState,
FALSE);
SetOrClearStatus(TF_LBI_STATUS_BTN_TOGGLED, dwState);
if (m_plbiSink)
m_plbiSink->OnUpdate(TF_LBI_STATUS);
}