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 "IDictionary.h"
  8. #include "ISpellCheck.h"
  9. // {54BF6567-1007-11D1-B0AA-444553540000}
  10. extern "C" const GUID CLSID_Dictionary = 
  11. { 0x54bf6567, 0x1007, 0x11d1,
  12. { 0xb0, 0xaa, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} } ;
  13. extern "C" const GUID IID_Dictionary = 
  14. { 0x54bf6568, 0x1007, 0x11d1,
  15. { 0xb0, 0xaa, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} } ;
  16. extern "C" const GUID IID_SpellCheck = 
  17. { 0x54bf6569, 0x1007, 0x11d1,
  18. { 0xb0, 0xaa, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} } ;
  19. int main(int argc, char* argv[])
  20. {
  21. IUnknown *pUnknown;
  22. IDictionary *pDictionary;
  23. ISpellCheck *pSpellCheck;
  24. String stringResult;
  25. BOOL bResult;
  26. HRESULT hResult;
  27. if (CoInitialize(NULL) != S_OK) {
  28. printf("Initialize COM library failed!n");
  29. return -1;
  30. }
  31. GUID dictionaryCLSID;
  32. hResult = ::CLSIDFromProgID(L"Dictionary.Object", &dictionaryCLSID);
  33. if (hResult != S_OK) 
  34. {
  35. printf("Can't find the dictionary CLSID!n");
  36. return -2;
  37. }
  38. hResult = CoCreateInstance(dictionaryCLSID, NULL, 
  39. CLSCTX_INPROC_SERVER, IID_IUnknown, (void **)&pUnknown);
  40. if (hResult != S_OK) 
  41. {
  42. printf("Create object failed!n");
  43. return -2;
  44. }
  45. hResult = pUnknown->QueryInterface(IID_Dictionary, (void **)&pDictionary);
  46. if (hResult != S_OK) {
  47. pUnknown->Release();
  48. printf("QueryInterface IDictionary failed!n");
  49. return -3;
  50. }
  51. bResult = pDictionary->LoadLibrary(L"animal.dict");
  52. if (bResult) {
  53. String stringResult;
  54. bResult = pDictionary->LookupWord(L"tiger", &stringResult);
  55. if (bResult) {
  56. char *pTiger = _com_util::ConvertBSTRToString(stringResult);
  57. printf("find the word "tiger" -- %sn", pTiger);
  58. delete pTiger;
  59. }
  60. pDictionary->InsertWord(L"elephant", L"象");
  61. bResult = pDictionary->LookupWord(L"elephant", &stringResult);
  62. if (bResult) {
  63. pDictionary->RestoreLibrary(L"animal1.dict");
  64. }
  65. } else {
  66. printf("Load Library "animal.dict"n");
  67. }
  68. hResult = pDictionary->QueryInterface(IID_SpellCheck, (void **)&pSpellCheck);
  69. pDictionary->Release();
  70. if (hResult != S_OK) {
  71. pUnknown->Release();
  72. printf("QueryInterface IDictionary failed!n");
  73. return -4;
  74. }
  75. bResult = pSpellCheck->CheckWord(L"lion", &stringResult);
  76. if (bResult) {
  77. printf("Word "lion" spelling right.n");
  78. } else {
  79. char *pLion = _com_util::ConvertBSTRToString(stringResult);
  80. printf("Word "lion" spelling is wrong. Maybe it is %s.n", pLion);
  81. delete pLion;
  82. }
  83. bResult = pSpellCheck->CheckWord(L"dot", &stringResult);
  84. if (bResult) {
  85. printf("Word "dot" spelling right.n");
  86. } else {
  87. char *pDot = _com_util::ConvertBSTRToString(stringResult);
  88. printf("Word "dot" spelling is wrong. Maybe it is %s.n", pDot);
  89. delete pDot;
  90. }
  91. pSpellCheck->Release();
  92. if (pUnknown->Release()== 0) 
  93. printf("The reference count of dictionary object is zero.");
  94. CoUninitialize();
  95. return 0;
  96. }