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

  1. //
  2. // fnconfig.cpp
  3. //
  4. #include "private.h"
  5. #include "fnconfig.h"
  6. #include "funcprv.h"
  7. #include "config.h"
  8. #include "globals.h"
  9. #include "helpers.h"
  10. #include "userex.h"
  11. #include "resource.h"
  12. #include "immxutil.h"
  13. //////////////////////////////////////////////////////////////////////////////
  14. //
  15. // CFnConfigure
  16. //
  17. //////////////////////////////////////////////////////////////////////////////
  18. //+---------------------------------------------------------------------------
  19. //
  20. // IUnknown
  21. //
  22. //----------------------------------------------------------------------------
  23. STDAPI CFnConfigure::QueryInterface(REFIID riid, void **ppvObj)
  24. {
  25. *ppvObj = NULL;
  26. if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_ITfFnConfigure))
  27. *ppvObj = SAFECAST(this, CFnConfigure *);
  28. if (*ppvObj)
  29. {
  30. AddRef();
  31. return S_OK;
  32. }
  33. return E_NOINTERFACE;
  34. }
  35. STDAPI_(ULONG) CFnConfigure::AddRef()
  36. {
  37. return InterlockedIncrement(&m_cRef);
  38. }
  39. STDAPI_(ULONG) CFnConfigure::Release()
  40. {
  41. long cr;
  42. cr = InterlockedDecrement(&m_cRef);
  43. Assert(cr >= 0);
  44. if (cr == 0)
  45. delete this;
  46. return cr;
  47. }
  48. //+---------------------------------------------------------------------------
  49. //
  50. // ctor
  51. //
  52. //----------------------------------------------------------------------------
  53. CFnConfigure::CFnConfigure(CFunctionProvider *pFuncPrv)
  54. {
  55. m_pFuncPrv = pFuncPrv;
  56. m_pFuncPrv->AddRef();
  57. m_cRef = 1;
  58. }
  59. //+---------------------------------------------------------------------------
  60. //
  61. // dtor
  62. //
  63. //----------------------------------------------------------------------------
  64. CFnConfigure::~CFnConfigure()
  65. {
  66. SafeRelease(m_pFuncPrv);
  67. }
  68. //+---------------------------------------------------------------------------
  69. //
  70. // GetDisplayName
  71. //
  72. //----------------------------------------------------------------------------
  73. STDAPI CFnConfigure::GetDisplayName(BSTR *pbstrName)
  74. {
  75. *pbstrName = SysAllocString(L"Microsoft Korean Keyboard Input Configure");
  76. return S_OK;
  77. }
  78. //+---------------------------------------------------------------------------
  79. //
  80. // Show
  81. //
  82. //----------------------------------------------------------------------------
  83. STDAPI CFnConfigure::Show(HWND hwnd, LANGID langid, REFGUID rguidProfile)
  84. {
  85. if (ConfigDLG(hwnd))
  86. return S_OK;
  87. else
  88. return E_FAIL;
  89. }
  90. //+---------------------------------------------------------------------------
  91. //
  92. // Show
  93. //
  94. //----------------------------------------------------------------------------
  95. STDAPI CFnConfigure::Show(HWND hwnd, LANGID langid, REFGUID rguidProfile, BSTR bstrRegistered)
  96. {
  97. return E_NOTIMPL;
  98. }
  99. //////////////////////////////////////////////////////////////////////////////
  100. //
  101. // CFnShowHelp
  102. //
  103. //////////////////////////////////////////////////////////////////////////////
  104. //+---------------------------------------------------------------------------
  105. //
  106. // IUnknown
  107. //
  108. //----------------------------------------------------------------------------
  109. STDAPI CFnShowHelp::QueryInterface(REFIID riid, void **ppvObj)
  110. {
  111. *ppvObj = NULL;
  112. if (IsEqualIID(riid, IID_IUnknown) ||
  113. IsEqualIID(riid, IID_ITfFnShowHelp))
  114. {
  115. *ppvObj = SAFECAST(this, CFnShowHelp *);
  116. }
  117. if (*ppvObj)
  118. {
  119. AddRef();
  120. return S_OK;
  121. }
  122. return E_NOINTERFACE;
  123. }
  124. STDAPI_(ULONG) CFnShowHelp::AddRef()
  125. {
  126. return InterlockedIncrement(&m_cRef);
  127. }
  128. STDAPI_(ULONG) CFnShowHelp::Release()
  129. {
  130. long cr;
  131. cr = InterlockedDecrement(&m_cRef);
  132. Assert(cr >= 0);
  133. if (cr == 0)
  134. {
  135. delete this;
  136. }
  137. return cr;
  138. }
  139. //+---------------------------------------------------------------------------
  140. //
  141. // ctor
  142. //
  143. //----------------------------------------------------------------------------
  144. CFnShowHelp::CFnShowHelp(CFunctionProvider *pFuncPrv)
  145. {
  146. m_pFuncPrv = pFuncPrv;
  147. m_pFuncPrv->AddRef();
  148. m_cRef = 1;
  149. }
  150. //+---------------------------------------------------------------------------
  151. //
  152. // dtor
  153. //
  154. //----------------------------------------------------------------------------
  155. CFnShowHelp::~CFnShowHelp()
  156. {
  157. SafeRelease(m_pFuncPrv);
  158. }
  159. //+---------------------------------------------------------------------------
  160. //
  161. // GetDisplayName
  162. //
  163. //----------------------------------------------------------------------------
  164. STDAPI CFnShowHelp::GetDisplayName(BSTR *pbstrName)
  165. {
  166. WCHAR szText[MAX_PATH];
  167. // Load Help display name
  168. LoadStringExW(g_hInst, IDS_HELP_DISPLAYNAME, szText, sizeof(szText)/sizeof(WCHAR));
  169. *pbstrName = SysAllocString(szText);
  170. return S_OK;
  171. }
  172. //+---------------------------------------------------------------------------
  173. //
  174. // Show
  175. //
  176. //----------------------------------------------------------------------------
  177. STDAPI CFnShowHelp::Show(HWND hwnd)
  178. {
  179. CHAR szHelpFileName[MAX_PATH];
  180. CHAR szHelpCmd[MAX_PATH];
  181. CHAR c_szHHEXE[] = "hh.exe";
  182. // Load Help display name
  183. LoadStringExA(g_hInst, IDS_HELP_FILENAME, szHelpFileName, sizeof(szHelpFileName)/sizeof(CHAR));
  184. StringCchCopyA(szHelpCmd, ARRAYSIZE(szHelpCmd), c_szHHEXE);
  185. StringCchCatA(szHelpCmd, ARRAYSIZE(szHelpCmd), " ");
  186. StringCchCatA(szHelpCmd, ARRAYSIZE(szHelpCmd), szHelpFileName);
  187. FullPathExec(c_szHHEXE, szHelpCmd, SW_SHOWNORMAL, TRUE);
  188. return S_OK;
  189. }