CntrItem.cpp
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:4k
源码类别:

游戏

开发平台:

Visual C++

  1. // CntrItem.cpp : implementation of the CMyCntrItem class
  2. //
  3. #include "stdafx.h"
  4. #include "新二十四点.h"
  5. #include "新二十四点Doc.h"
  6. #include "新二十四点View.h"
  7. #include "CntrItem.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMyCntrItem implementation
  15. IMPLEMENT_SERIAL(CMyCntrItem, COleClientItem, 0)
  16. CMyCntrItem::CMyCntrItem(CMyDoc* pContainer)
  17. : COleClientItem(pContainer)
  18. {
  19. // TODO: add one-time construction code here
  20. }
  21. CMyCntrItem::~CMyCntrItem()
  22. {
  23. // TODO: add cleanup code here
  24. }
  25. void CMyCntrItem::OnChange(OLE_NOTIFICATION nCode, DWORD dwParam)
  26. {
  27. ASSERT_VALID(this);
  28. COleClientItem::OnChange(nCode, dwParam);
  29. // When an item is being edited (either in-place or fully open)
  30. //  it sends OnChange notifications for changes in the state of the
  31. //  item or visual appearance of its content.
  32. // TODO: invalidate the item by calling UpdateAllViews
  33. //  (with hints appropriate to your application)
  34. GetDocument()->UpdateAllViews(NULL);
  35. // for now just update ALL views/no hints
  36. }
  37. BOOL CMyCntrItem::OnChangeItemPosition(const CRect& rectPos)
  38. {
  39. ASSERT_VALID(this);
  40. // During in-place activation CMyCntrItem::OnChangeItemPosition
  41. //  is called by the server to change the position of the in-place
  42. //  window.  Usually, this is a result of the data in the server
  43. //  document changing such that the extent has changed or as a result
  44. //  of in-place resizing.
  45. //
  46. // The default here is to call the base class, which will call
  47. //  COleClientItem::SetItemRects to move the item
  48. //  to the new position.
  49. if (!COleClientItem::OnChangeItemPosition(rectPos))
  50. return FALSE;
  51. // TODO: update any cache you may have of the item's rectangle/extent
  52. return TRUE;
  53. }
  54. void CMyCntrItem::OnGetItemPosition(CRect& rPosition)
  55. {
  56. ASSERT_VALID(this);
  57. // During in-place activation, CMyCntrItem::OnGetItemPosition
  58. //  will be called to determine the location of this item.  The default
  59. //  implementation created from AppWizard simply returns a hard-coded
  60. //  rectangle.  Usually, this rectangle would reflect the current
  61. //  position of the item relative to the view used for activation.
  62. //  You can obtain the view by calling CMyCntrItem::GetActiveView.
  63. // TODO: return correct rectangle (in pixels) in rPosition
  64. rPosition.SetRect(10, 10, 210, 210);
  65. }
  66. void CMyCntrItem::OnActivate()
  67. {
  68.     // Allow only one inplace activate item per frame
  69.     CMyView* pView = GetActiveView();
  70.     ASSERT_VALID(pView);
  71.     COleClientItem* pItem = GetDocument()->GetInPlaceActiveItem(pView);
  72.     if (pItem != NULL && pItem != this)
  73.         pItem->Close();
  74.     
  75.     COleClientItem::OnActivate();
  76. }
  77. void CMyCntrItem::OnDeactivateUI(BOOL bUndoable)
  78. {
  79. COleClientItem::OnDeactivateUI(bUndoable);
  80.     // Hide the object if it is not an outside-in object
  81.     DWORD dwMisc = 0;
  82.     m_lpObject->GetMiscStatus(GetDrawAspect(), &dwMisc);
  83.     if (dwMisc & OLEMISC_INSIDEOUT)
  84.         DoVerb(OLEIVERB_HIDE, NULL);
  85. }
  86. void CMyCntrItem::Serialize(CArchive& ar)
  87. {
  88. ASSERT_VALID(this);
  89. // Call base class first to read in COleClientItem data.
  90. // Since this sets up the m_pDocument pointer returned from
  91. //  CMyCntrItem::GetDocument, it is a good idea to call
  92. //  the base class Serialize first.
  93. COleClientItem::Serialize(ar);
  94. // now store/retrieve data specific to CMyCntrItem
  95. if (ar.IsStoring())
  96. {
  97. // TODO: add storing code here
  98. }
  99. else
  100. {
  101. // TODO: add loading code here
  102. }
  103. }
  104. /////////////////////////////////////////////////////////////////////////////
  105. // CMyCntrItem diagnostics
  106. #ifdef _DEBUG
  107. void CMyCntrItem::AssertValid() const
  108. {
  109. COleClientItem::AssertValid();
  110. }
  111. void CMyCntrItem::Dump(CDumpContext& dc) const
  112. {
  113. COleClientItem::Dump(dc);
  114. }
  115. #endif
  116. /////////////////////////////////////////////////////////////////////////////