IPchkMgr.cpp
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:4k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // IPchkMgr.cpp : Defines the initialization routines for the DLL.
  2. //
  3. #include "stdafx.h"
  4. #include <afxdllx.h>
  5. #include "WarClient.h"
  6. #include "resource.h"
  7. #include "IPextDlg.h"
  8. #include "IPShitlistUserTab.h"
  9. #include "UserDialog.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. static AFX_EXTENSION_MODULE IPchkMgrDLL = { NULL, NULL };
  16. BOOL GetUserOptionTab(CUserDialog *pUserDlg, CWnd *pFatherWnd, CWarUserDlgTemplate **Ptr);
  17. extern "C" int APIENTRY
  18. DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  19. {
  20. if (dwReason == DLL_PROCESS_ATTACH)
  21. {
  22. TRACE0("IPCHKMGR.DLL Initializing!n");
  23. // Extension DLL one-time initialization
  24. AfxInitExtensionModule(IPchkMgrDLL, hInstance);
  25. // Insert this DLL into the resource chain
  26. new CDynLinkLibrary(IPchkMgrDLL);
  27. }
  28. else if (dwReason == DLL_PROCESS_DETACH)
  29. {
  30. TRACE0("IPCHKMGR.DLL Terminating!n");
  31. }
  32. return 1;   // ok
  33. }
  34. // Daemon properties tab
  35. // Add the dialog to the tab... Event is the server Option number
  36. CIPextDlg *pDaemonTab;
  37. int QueryForDaemonPropertyPage(int Event, WPARAM wParam, LPARAM lParam)
  38. {
  39. CRemoteInterface *pRemote = (CRemoteInterface *)wParam;
  40. CPropertySheet *pSheet = (CPropertySheet *) lParam;
  41. pDaemonTab = new CIPextDlg;
  42. if (pSheet)
  43. {
  44. pDaemonTab->COptions::Create((LPVOID)pRemote, NULL, "IPchkExt", Event);
  45. pDaemonTab->LoadAll();
  46. pSheet->AddPage(pDaemonTab);
  47. }
  48. return 0; // ignored
  49. }
  50. int SaveDaemonPropertyPage(int Event, WPARAM wParam, LPARAM lParam)
  51. {
  52. if (pDaemonTab)
  53. pDaemonTab->SaveAll();
  54. return 0; // ignored
  55. }
  56. int ReleaseDaemonPropertyPage(int Event, WPARAM wParam, LPARAM lParam)
  57. {
  58. if (pDaemonTab)
  59. {
  60. delete pDaemonTab;
  61. pDaemonTab = NULL;
  62. }
  63. return 0; // ignored
  64. }
  65. //////////////////////////////////////////////////////////////////////////////////
  66. // User dialog options tab. This is a 'normal' dialog, assigned to a 'tab number'.
  67. // Some of the option tabs are handled by CUserDialog itself, others
  68. // by plugins. The dialog must be derived from CWarUserDlgTemplate.
  69. //
  70. // The entry point will increment a tab counter and add information about
  71. // the dialog to the CUserDialog::m_DlgPlugins linked list.
  72. // The dialog object must be created and initialized by the
  73. // function GetUserOptionTab(CUserDialog *, CWnd *).
  74. // It will be deleted after use by the CUserDialog itself.
  75. //
  76. // One dll can add 0 - n option tabs by it's own choise. But if more than
  77. // one tab is used, it must have several GetUserOptionTab() functions,
  78. // with different names. The pointer to the function is initialized by
  79. // QueryUserDlgTabs() so this will not cause any problems. The name of
  80. // GetUserOptionTab is not looked up by the framework.
  81. // The only export function in the user option tab subsystem is 
  82. // QueryUserDlgTabs()
  83. int QueryUserDlgTabs(int Event, WPARAM wParam, LPARAM lParam)
  84. {
  85. int *pTabNum = (int *)wParam; // First free tab number
  86. CUserDialog *pUserDlg = (CUserDialog *)lParam;
  87. CString cBuf;
  88. CDllTab *pDLLtab = new CDllTab;
  89. pDLLtab->m_Num = *pTabNum;
  90. pDLLtab->m_GetDlg = GetUserOptionTab;
  91. pUserDlg->m_DlgPlugins.AddLast((LPVOID)pDLLtab);
  92. *pTabNum = *pTabNum + 1; // Increment tab number
  93. // Create the tab entry in the user dialog
  94. TC_ITEM tI;
  95. tI.mask = TCIF_TEXT | TCIF_PARAM;
  96. tI.pszText = (LPSTR)LoadString(IDS_IPSEC_TABNAME, cBuf);
  97. tI.cchTextMax = cBuf.GetLength();
  98. tI.lParam = pDLLtab->m_Num;
  99. pUserDlg->m_Tab1.InsertItem(pDLLtab->m_Num, &tI);
  100. return 0; // Always return 0
  101. }
  102. // Our own function to create and initialize an option tab
  103. BOOL GetUserOptionTab(CUserDialog *pUserDlg, CWnd *pFatherWnd, CWarUserDlgTemplate **Ptr)
  104. {
  105. CIPShitlistUserTab *pTab = new CIPShitlistUserTab;
  106. // This is _requiered_!
  107. pTab->m_pUserDlg = pUserDlg;
  108. // Create the dialog
  109. if (pTab->Create(CIPShitlistUserTab::IDD, pFatherWnd))
  110. {
  111. // Set the pointer to point at the dialog. This pointer is
  112. // used by the framework to access the dialog.
  113. *Ptr = pTab;
  114. return TRUE;
  115. }
  116. return FALSE;
  117. }