// [!output CONTAINER_ITEM_IMPL] : [!output CONTAINER_ITEM_CLASS] Ŭ·¡½ºÀÇ ±¸Çö // #include "stdafx.h" #include "[!output APP_HEADER]" [!if OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW] #include "[!output ROWSET_HEADER]" [!endif] #include "[!output DOC_HEADER]" #include "[!output VIEW_HEADER]" #include "[!output CONTAINER_ITEM_HEADER]" #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output CONTAINER_ITEM_CLASS] ±¸Çö IMPLEMENT_SERIAL([!output CONTAINER_ITEM_CLASS], [!output CONTAINER_ITEM_BASE_CLASS], 0) [!if RICH_EDIT_VIEW] [!output CONTAINER_ITEM_CLASS]::[!output CONTAINER_ITEM_CLASS](REOBJECT* preo, [!output DOC_CLASS]* pContainer) : [!output CONTAINER_ITEM_BASE_CLASS](preo, pContainer) [!else] [!output CONTAINER_ITEM_CLASS]::[!output CONTAINER_ITEM_CLASS]([!output DOC_CLASS]* pContainer) : [!output CONTAINER_ITEM_BASE_CLASS](pContainer) [!endif] { // TODO: ¿©±â¿¡ ÀÏȸ¼º »ý¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } [!output CONTAINER_ITEM_CLASS]::~[!output CONTAINER_ITEM_CLASS]() { // TODO: ¿©±â¿¡ Á¤¸® Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } [!if !RICH_EDIT_VIEW] void [!output CONTAINER_ITEM_CLASS]::OnChange(OLE_NOTIFICATION nCode, DWORD dwParam) { ASSERT_VALID(this); [!output CONTAINER_ITEM_BASE_CLASS]::OnChange(nCode, dwParam); // Ç׸ñÀÌ ÆíÁý(³»ºÎ ÆíÁý ¶Ç´Â ¿ÏÀü °³¹æ ÆíÁý)µÉ ¶§ // ÇØ´ç Ç׸ñÀÇ »óųª ³»¿ëÀÇ ¸ð¾çÀÌ º¯°æµÇ¸é OnChange // ¾Ë¸²À» º¸³À´Ï´Ù. // TODO: UpdateAllViews¸¦ È£ÃâÇÏ¿© Ç׸ñÀ» ¹«È¿È­ÇÕ´Ï´Ù. // ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÀûÇÕÇÑ ÈùÆ®¸¦ Æ÷ÇÔÇÕ´Ï´Ù. GetDocument()->UpdateAllViews(NULL); // ¿©±â¼­´Â ÈùÆ® ¾øÀÌ ¸ðµç ºä¸¦ ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. } BOOL [!output CONTAINER_ITEM_CLASS]::OnChangeItemPosition(const CRect& rectPos) { ASSERT_VALID(this); // ³»ºÎ Ȱ¼ºÈ­ µ¿¾È ¼­¹ö¿¡¼­ [!output CONTAINER_ITEM_CLASS]::OnChangeItemPositionÀ» // È£ÃâÇÏ¿© ³»ºÎ âÀÇ À§Ä¡¸¦ º¯°æÇÕ´Ï´Ù. // ÀϹÝÀûÀ¸·Î, ÀÌ·¯ÇÑ ÀÛ¾÷Àº ¹üÀ§°¡ º¯°æµÇ°Å³ª // ³»ºÎ Å©±â°¡ º¯°æµÊÀ¸·Î½á ¼­¹ö ¹®¼­ÀÇ µ¥ÀÌÅͰ¡ º¯°æµÇ¾î // ³ªÅ¸³ª´Â °á°úÀÔ´Ï´Ù. // // ¿©±â¼­ ±âº»°ªÀº ±âº» Ŭ·¡½º¸¦ È£ÃâÇÏ´Â °ÍÀ̸ç // [!output CONTAINER_ITEM_BASE_CLASS]::SetItemRects¸¦ È£ÃâÇÏ¿© Ç׸ñÀ» // »õ À§Ä¡·Î À̵¿ÇÕ´Ï´Ù. if (![!output CONTAINER_ITEM_BASE_CLASS]::OnChangeItemPosition(rectPos)) return FALSE; // TODO: Ç׸ñÀÇ »ç°¢Çü/¹üÀ§¿¡ ÇØ´çÇÏ´Â ¸ðµç ij½Ã¸¦ ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. return TRUE; } [!if !ACTIVE_DOC_CONTAINER] void [!output CONTAINER_ITEM_CLASS]::OnGetItemPosition(CRect& rPosition) { ASSERT_VALID(this); // ³»ºÎ Ȱ¼ºÈ­ µ¿¾È ¼­¹ö¿¡¼­ [!output CONTAINER_ITEM_CLASS]::OnGetItemPositionÀ» // È£ÃâÇÏ¿© ÀÌ Ç׸ñÀÇ À§Ä¡¸¦ °áÁ¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î, ÀÌ »ç°¢ÇüÀº // ÇØ´ç Ç׸ñÀÇ ÇöÀç À§Ä¡¸¦ ¹Ý¿µÇϴµ¥, ÀÌ À§Ä¡´Â Ȱ¼ºÈ­¿¡ »ç¿ëµÇ´Â ºä¿¡ ´ëÇÑ // »ó´ëÀû À§Ä¡ÀÔ´Ï´Ù. [!output CONTAINER_ITEM_CLASS]::GetActiveView¸¦ // È£ÃâÇÏ¸é ºä¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. // TODO: rPosition¿¡ ¿Ã¹Ù¸¥ »ç°¢ÇüÀ» Çȼ¿ ´ÜÀ§·Î ¹ÝȯÇÕ´Ï´Ù. CSize size; rPosition.SetRectEmpty(); if (SUCCEEDED(GetExtent(&size, m_nDrawAspect))) { [!output VIEW_CLASS]* pView = GetActiveView(); ASSERT_VALID(pView); if (!pView) return; CDC *pDC = pView->GetDC(); ASSERT(pDC); if (!pDC) return; pDC->HIMETRICtoLP(&size); rPosition.SetRect(10, 10, size.cx + 10, size.cy + 10); } else rPosition.SetRect(10, 10, 210, 210); } [!endif] void [!output CONTAINER_ITEM_CLASS]::OnActivate() { [!if !ACTIVE_DOC_CONTAINER] // ÇÁ·¹ÀÓ¸¶´Ù ³»ºÎ Ȱ¼ºÈ­ Ç׸ñÀ» Çϳª¸¸ Çã¿ëÇÕ´Ï´Ù. [!output VIEW_CLASS]* pView = GetActiveView(); ASSERT_VALID(pView); if (!pView) return; COleClientItem* pItem = GetDocument()->GetInPlaceActiveItem(pView); if (pItem != NULL && pItem != this) pItem->Close(); [!output CONTAINER_ITEM_BASE_CLASS]::OnActivate(); [!endif] } void [!output CONTAINER_ITEM_CLASS]::OnDeactivateUI(BOOL bUndoable) { [!output CONTAINER_ITEM_BASE_CLASS]::OnDeactivateUI(bUndoable); DWORD dwMisc = 0; m_lpObject->GetMiscStatus(GetDrawAspect(), &dwMisc); if (dwMisc & OLEMISC_INSIDEOUT) DoVerb(OLEIVERB_HIDE, NULL); } void [!output CONTAINER_ITEM_CLASS]::Serialize(CArchive& ar) { ASSERT_VALID(this); // [!output CONTAINER_ITEM_BASE_CLASS] µ¥ÀÌÅÍ¿¡¼­ Àбâ À§ÇØ ±âº» Ŭ·¡½º¸¦ ¸Ç óÀ½ È£ÃâÇÕ´Ï´Ù. // ÀÌ·¸°Ô Çϸé [!output CONTAINER_ITEM_CLASS]::GetDocument¿¡¼­ ¹ÝȯÇÑ // m_pDocument Æ÷ÀÎÅͰ¡ ¼³Á¤µÇ±â ¶§¹®¿¡ ±âº» Ŭ·¡½º // Serialize¸¦ ¸ÕÀú È£ÃâÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. [!output CONTAINER_ITEM_BASE_CLASS]::Serialize(ar); // ÀÌÁ¦ [!output CONTAINER_ITEM_CLASS]¿¡ °ü·ÃµÈ µ¥ÀÌÅ͸¦ ÀúÀå/°Ë»öÇÕ´Ï´Ù. if (ar.IsStoring()) { // TODO: ¿©±â¿¡ ÀúÀå Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } else { // TODO: ¿©±â¿¡ ·Îµù Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } } [!if CONTAINER_SERVER] BOOL [!output CONTAINER_ITEM_CLASS]::CanActivate() { // ¼­¹ö ÀÚü°¡ ³»ºÎ ÆíÁýµÇ´Â µ¿¾È¿¡´Â ³»ºÎ ÆíÁýÀÌ ÀÛµ¿µÇÁö ¾ÊÀ¸¸ç // Áö¿øµÇÁöµµ ¾Ê½À´Ï´Ù. µû¶ó¼­ ÀÌ °æ¿ì¿¡´Â ³»ºÎ Ȱ¼ºÈ­¸¦ // ºñȰ¼ºÈ­ÇÕ´Ï´Ù. [!output DOC_CLASS]* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return FALSE; ASSERT_KINDOF(COleServerDoc, pDoc); if (!pDoc->IsKindOf(RUNTIME_CLASS(COleServerDoc))) { return FALSE; } if (pDoc->IsInPlaceActive()) return FALSE; // ±×·¸Áö ¾ÊÀ¸¸é ±âº» µ¿ÀÛÀ» »ç¿ëÇÕ´Ï´Ù. return COleClientItem::CanActivate(); } [!endif] [!endif] // [!output CONTAINER_ITEM_CLASS] Áø´Ü #ifdef _DEBUG void [!output CONTAINER_ITEM_CLASS]::AssertValid() const { [!output CONTAINER_ITEM_BASE_CLASS]::AssertValid(); } void [!output CONTAINER_ITEM_CLASS]::Dump(CDumpContext& dc) const { [!output CONTAINER_ITEM_BASE_CLASS]::Dump(dc); } #endif