srvritem.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // [!output SERVER_ITEM_IMPL] : implementation of the [!output SERVER_ITEM_CLASS] class
  2. //
  3. #include "stdafx.h"
  4. #include "[!output APP_HEADER]"
  5. #include "[!output DOC_HEADER]"
  6. #include "[!output SERVER_ITEM_HEADER]"
  7. [!if CONTAINER_SERVER]
  8. #include "[!output CONTAINER_ITEM_HEADER]"
  9. [!endif]
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13. // [!output SERVER_ITEM_CLASS] implementation
  14. IMPLEMENT_DYNAMIC([!output SERVER_ITEM_CLASS], [!output SERVER_ITEM_BASE_CLASS])
  15. [!output SERVER_ITEM_CLASS]::[!output SERVER_ITEM_CLASS]([!output DOC_CLASS]* pContainerDoc)
  16. : [!output SERVER_ITEM_BASE_CLASS](pContainerDoc, TRUE)
  17. {
  18. // TODO: add one-time construction code here
  19. //  (eg, adding additional clipboard formats to the item's data source)
  20. }
  21. [!output SERVER_ITEM_CLASS]::~[!output SERVER_ITEM_CLASS]()
  22. {
  23. // TODO: add cleanup code here
  24. }
  25. void [!output SERVER_ITEM_CLASS]::Serialize(CArchive& ar)
  26. {
  27. // [!output SERVER_ITEM_CLASS]::Serialize will be called by the framework if
  28. //  the item is copied to the clipboard.  This can happen automatically
  29. //  through the OLE callback OnGetClipboardData.  A good default for
  30. //  the embedded item is simply to delegate to the document's Serialize
  31. //  function.  If you support links, then you will want to serialize
  32. //  just a portion of the document.
  33. if (!IsLinkedItem())
  34. {
  35. [!output DOC_CLASS]* pDoc = GetDocument();
  36. ASSERT_VALID(pDoc);
  37. if (pDoc)
  38. pDoc->Serialize(ar);
  39. }
  40. }
  41. BOOL [!output SERVER_ITEM_CLASS]::OnGetExtent(DVASPECT dwDrawAspect, CSize& rSize)
  42. {
  43. // Most applications, like this one, only handle drawing the content
  44. //  aspect of the item.  If you wish to support other aspects, such
  45. //  as DVASPECT_THUMBNAIL (by overriding OnDrawEx), then this
  46. //  implementation of OnGetExtent should be modified to handle the
  47. //  additional aspect(s).
  48. if (dwDrawAspect != DVASPECT_CONTENT)
  49. return [!output SERVER_ITEM_BASE_CLASS]::OnGetExtent(dwDrawAspect, rSize);
  50. // [!output SERVER_ITEM_CLASS]::OnGetExtent is called to get the extent in
  51. //  HIMETRIC units of the entire item.  The default implementation
  52. //  here simply returns a hard-coded number of units.
  53. // TODO: replace this arbitrary size
  54. rSize = CSize(3000, 3000);   // 3000 x 3000 HIMETRIC units
  55. return TRUE;
  56. }
  57. BOOL [!output SERVER_ITEM_CLASS]::OnDraw(CDC* pDC, CSize& rSize)
  58. {
  59. if (!pDC)
  60. return FALSE;
  61. // Remove this if you use rSize
  62. UNREFERENCED_PARAMETER(rSize);
  63. // TODO: set mapping mode and extent
  64. //  (The extent is usually the same as the size returned from OnGetExtent)
  65. pDC->SetMapMode(MM_ANISOTROPIC);
  66. pDC->SetWindowOrg(0,0);
  67. pDC->SetWindowExt(3000, 3000);
  68. // TODO: add drawing code here.  Optionally, fill in the HIMETRIC extent.
  69. //  All drawing takes place in the metafile device context (pDC).
  70. [!if CONTAINER_SERVER]
  71. // TODO: also draw embedded [!output CONTAINER_ITEM_CLASS] objects.
  72. [!endif]
  73. [!if CONTAINER_SERVER]
  74. // The following code draws the first item at an arbitrary position.
  75. // TODO: remove this code when your real drawing code is complete
  76. [!output DOC_CLASS]* pDoc = GetDocument();
  77. ASSERT_VALID(pDoc);
  78. if (!pDoc)
  79. return FALSE;
  80. POSITION pos = pDoc->GetStartPosition();
  81. [!output CONTAINER_ITEM_CLASS]* pItem = DYNAMIC_DOWNCAST([!output CONTAINER_ITEM_CLASS], pDoc->GetNextClientItem(pos));
  82. if (pItem != NULL)
  83. pItem->Draw(pDC, CRect(10, 10, 1010, 1010));
  84. [!endif]
  85. return TRUE;
  86. }
  87. // [!output SERVER_ITEM_CLASS] diagnostics
  88. #ifdef _DEBUG
  89. void [!output SERVER_ITEM_CLASS]::AssertValid() const
  90. {
  91. [!output SERVER_ITEM_BASE_CLASS]::AssertValid();
  92. }
  93. void [!output SERVER_ITEM_CLASS]::Dump(CDumpContext& dc) const
  94. {
  95. [!output SERVER_ITEM_BASE_CLASS]::Dump(dc);
  96. }
  97. #endif