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.
 
 
 
 
 
 

240 lines
5.4 KiB

//
// fnconfig.cpp
//
#include "private.h"
#include "fnconfig.h"
#include "funcprv.h"
#include "config.h"
#include "globals.h"
#include "helpers.h"
#include "userex.h"
#include "resource.h"
#include "immxutil.h"
//////////////////////////////////////////////////////////////////////////////
//
// CFnConfigure
//
//////////////////////////////////////////////////////////////////////////////
//+---------------------------------------------------------------------------
//
// IUnknown
//
//----------------------------------------------------------------------------
STDAPI CFnConfigure::QueryInterface(REFIID riid, void **ppvObj)
{
*ppvObj = NULL;
if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_ITfFnConfigure))
*ppvObj = SAFECAST(this, CFnConfigure *);
if (*ppvObj)
{
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
STDAPI_(ULONG) CFnConfigure::AddRef()
{
return InterlockedIncrement(&m_cRef);
}
STDAPI_(ULONG) CFnConfigure::Release()
{
long cr;
cr = InterlockedDecrement(&m_cRef);
Assert(cr >= 0);
if (cr == 0)
delete this;
return cr;
}
//+---------------------------------------------------------------------------
//
// ctor
//
//----------------------------------------------------------------------------
CFnConfigure::CFnConfigure(CFunctionProvider *pFuncPrv)
{
m_pFuncPrv = pFuncPrv;
m_pFuncPrv->AddRef();
m_cRef = 1;
}
//+---------------------------------------------------------------------------
//
// dtor
//
//----------------------------------------------------------------------------
CFnConfigure::~CFnConfigure()
{
SafeRelease(m_pFuncPrv);
}
//+---------------------------------------------------------------------------
//
// GetDisplayName
//
//----------------------------------------------------------------------------
STDAPI CFnConfigure::GetDisplayName(BSTR *pbstrName)
{
*pbstrName = SysAllocString(L"Microsoft Korean Keyboard Input Configure");
return S_OK;
}
//+---------------------------------------------------------------------------
//
// Show
//
//----------------------------------------------------------------------------
STDAPI CFnConfigure::Show(HWND hwnd, LANGID langid, REFGUID rguidProfile)
{
if (ConfigDLG(hwnd))
return S_OK;
else
return E_FAIL;
}
//+---------------------------------------------------------------------------
//
// Show
//
//----------------------------------------------------------------------------
STDAPI CFnConfigure::Show(HWND hwnd, LANGID langid, REFGUID rguidProfile, BSTR bstrRegistered)
{
return E_NOTIMPL;
}
//////////////////////////////////////////////////////////////////////////////
//
// CFnShowHelp
//
//////////////////////////////////////////////////////////////////////////////
//+---------------------------------------------------------------------------
//
// IUnknown
//
//----------------------------------------------------------------------------
STDAPI CFnShowHelp::QueryInterface(REFIID riid, void **ppvObj)
{
*ppvObj = NULL;
if (IsEqualIID(riid, IID_IUnknown) ||
IsEqualIID(riid, IID_ITfFnShowHelp))
{
*ppvObj = SAFECAST(this, CFnShowHelp *);
}
if (*ppvObj)
{
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
STDAPI_(ULONG) CFnShowHelp::AddRef()
{
return InterlockedIncrement(&m_cRef);
}
STDAPI_(ULONG) CFnShowHelp::Release()
{
long cr;
cr = InterlockedDecrement(&m_cRef);
Assert(cr >= 0);
if (cr == 0)
{
delete this;
}
return cr;
}
//+---------------------------------------------------------------------------
//
// ctor
//
//----------------------------------------------------------------------------
CFnShowHelp::CFnShowHelp(CFunctionProvider *pFuncPrv)
{
m_pFuncPrv = pFuncPrv;
m_pFuncPrv->AddRef();
m_cRef = 1;
}
//+---------------------------------------------------------------------------
//
// dtor
//
//----------------------------------------------------------------------------
CFnShowHelp::~CFnShowHelp()
{
SafeRelease(m_pFuncPrv);
}
//+---------------------------------------------------------------------------
//
// GetDisplayName
//
//----------------------------------------------------------------------------
STDAPI CFnShowHelp::GetDisplayName(BSTR *pbstrName)
{
WCHAR szText[MAX_PATH];
// Load Help display name
LoadStringExW(g_hInst, IDS_HELP_DISPLAYNAME, szText, sizeof(szText)/sizeof(WCHAR));
*pbstrName = SysAllocString(szText);
return S_OK;
}
//+---------------------------------------------------------------------------
//
// Show
//
//----------------------------------------------------------------------------
STDAPI CFnShowHelp::Show(HWND hwnd)
{
CHAR szHelpFileName[MAX_PATH];
CHAR szHelpCmd[MAX_PATH];
CHAR c_szHHEXE[] = "hh.exe";
// Load Help display name
LoadStringExA(g_hInst, IDS_HELP_FILENAME, szHelpFileName, sizeof(szHelpFileName)/sizeof(CHAR));
StringCchCopyA(szHelpCmd, ARRAYSIZE(szHelpCmd), c_szHHEXE);
StringCchCatA(szHelpCmd, ARRAYSIZE(szHelpCmd), " ");
StringCchCatA(szHelpCmd, ARRAYSIZE(szHelpCmd), szHelpFileName);
FullPathExec(c_szHHEXE, szHelpCmd, SW_SHOWNORMAL, TRUE);
return S_OK;
}