DictCtrl.cpp
上传用户:biuytresa
上传日期:2007-12-07
资源大小:721k
文件大小:3k
源码类别:

DNA

开发平台:

Visual C++

  1. // DictCtrl.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "windows.h"
  5. #include <stdio.h>
  6. #include <comutil.h>
  7. #include "IMyUnknown.h"
  8. #include "IDictionary.h"
  9. #include "ISpellCheck.h"
  10. // {54BF6567-1007-11D1-B0AA-444553540000}
  11. extern "C" const GUID CLSID_Dictionary = 
  12. { 0x54bf6567, 0x1007, 0x11d1,
  13. { 0xb0, 0xaa, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} } ;
  14. HMODULE hModual;
  15. BOOL CreateObject(const CLSID& clsid, const IID& iid, void **ppv)
  16. {
  17. hModual = LoadLibrary("DictComp.dll");
  18. if (hModual == NULL) return 0;
  19. typedef BOOL  (__stdcall*  MyFunctionType)(const CLSID& clsid, const IID& iid, void **ppv);
  20. MyFunctionType fnCreateObject;
  21. fnCreateObject = (MyFunctionType)GetProcAddress(hModual, "CreateObject");
  22. if (fnCreateObject == NULL) {
  23. FreeLibrary(hModual);
  24. return FALSE;
  25. }
  26. return fnCreateObject(clsid, iid, ppv);
  27. }
  28. int main(int argc, char* argv[])
  29. {
  30. hModual = NULL;
  31. IMyUnknown *pMyUnknown;
  32. IDictionary *pDictionary;
  33. ISpellCheck *pSpellCheck;
  34. String stringResult;
  35. BOOL bResult;
  36. HRESULT hResult;
  37. bResult = CreateObject(CLSID_Dictionary, IID_IUnknown, (void **)&pMyUnknown);
  38. if (bResult == FALSE) 
  39. {
  40. printf("Create object failed!n");
  41. return -1;
  42. }
  43. hResult = pMyUnknown->QueryInterface(IID_Dictionary, (void **)&pDictionary);
  44. if (hResult != S_OK) {
  45. pMyUnknown->Release();
  46. printf("QueryInterface IDictionary failed!n");
  47. return -2;
  48. }
  49. bResult = pDictionary->LoadLibrary(L"animal.dict");
  50. if (bResult) {
  51. bResult = pDictionary->LookupWord(L"tiger", &stringResult);
  52. if (bResult) {
  53. char *pTiger = _com_util::ConvertBSTRToString(stringResult);
  54. printf("find the word "tiger" -- %sn", pTiger);
  55. delete pTiger;
  56. }
  57. pDictionary->InsertWord(L"elephant", L"象");
  58. bResult = pDictionary->LookupWord(L"elephant", &stringResult);
  59. if (bResult) {
  60. pDictionary->RestoreLibrary(L"animal1.dict");
  61. }
  62. } else {
  63. printf("Load Library "animal.dict"n");
  64. return -2;
  65. }
  66. hResult = pDictionary->QueryInterface(IID_SpellCheck, (void **)&pSpellCheck);
  67. pDictionary->Release();
  68. if (hResult != S_OK) {
  69. pMyUnknown->Release();
  70. printf("QueryInterface IDictionary failed!n");
  71. return -2;
  72. }
  73. bResult = pSpellCheck->CheckWord(L"lion", &stringResult);
  74. if (bResult) {
  75. printf("Word "lion" spelling right.n");
  76. } else {
  77. char *pLion = _com_util::ConvertBSTRToString(stringResult);
  78. printf("Word "lion" spelling is wrong. Maybe it is %s.n", pLion);
  79. delete pLion;
  80. }
  81. bResult = pSpellCheck->CheckWord(L"dot", &stringResult);
  82. if (bResult) {
  83. printf("Word "dot" spelling right.n");
  84. } else {
  85. char *pDot = _com_util::ConvertBSTRToString(stringResult);
  86. printf("Word "dot" spelling is wrong. Maybe it is %s.n", pDot);
  87. delete pDot;
  88. }
  89. pSpellCheck->Release();
  90. if (pMyUnknown->Release()== 0) 
  91. FreeLibrary(hModual);
  92. return 0;
  93. }