ComWindow.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // -------------------------------------------------------------------------
  2. // 文件名 : ComWindow.cpp
  3. // 创建者 : 万里
  4. // 创建时间 : 2003-7-24 10:34:26
  5. // 功能描述 :
  6. //
  7. // -------------------------------------------------------------------------
  8. #include "KWin32.h"
  9. #include "ComWindow.h"
  10. #include "string.h"
  11. static KComClassFactory gs_Factory;
  12. KComClassFactory* gGetComClassFactory()
  13. {
  14. return &gs_Factory;
  15. }
  16. #define MAX_CLASSINFO 100
  17. static KComClassInfo g_ClassInfs[MAX_CLASSINFO];
  18. static int g_nClassCount;
  19. KComClassFactory::KComClassFactory()
  20. {
  21. g_nClassCount = 0;
  22. }
  23. KComClassInfo* KComClassFactory::FindComClass(const char* szClassType)
  24. {
  25. for (int i = 0; i < g_nClassCount; i++)
  26. {
  27. if (strcmp(szClassType, g_ClassInfs[i].szClassType) == 0)
  28. return g_ClassInfs + i;
  29. }
  30. return NULL;
  31. }
  32. KComClassInfo* KComClassFactory::FindComClass(const KComClassInfo* pDest)
  33. {
  34. if (pDest == NULL)
  35. return NULL;
  36. return FindComClass(pDest->szClassType);
  37. }
  38. int KComClassFactory::RegisterComClass(const KComClassInfo& one)
  39. {
  40. if (!FindComClass(one.szClassType))
  41. {
  42. if (g_nClassCount < MAX_CLASSINFO - 1)
  43. {
  44. g_ClassInfs[g_nClassCount] = one;
  45. g_nClassCount++;
  46. return g_nClassCount;
  47. }
  48. }
  49. return 0;
  50. }
  51. KWndWindow* KComClassFactory::CreateComObject(const char* szClassType)
  52. {
  53. KComClassInfo* p = FindComClass(szClassType);
  54. if (p && p->pfnCreateObject)
  55. {
  56. return p->pfnCreateObject();
  57. }
  58. return NULL;
  59. }