<ºÐÇÒ À©µµ¿ì¿¡¼­ ºä ¹Ù²Ù±â>

ºÐÇÒ À©µµ¿ì¿¡¼­ ÇÑÂÊ Ã¢ÀÇ ¹öÆ°À» ´­·¶À» ¶§ ´Ù¸¥ âÀÇ ºä°¡ »õ·Î¿î ºä·Î ÀüȯµÇµµ·Ï ÇÏ·Á°í Çϴµ¥ Àß ¾ÈµÇ³×¿ä. ¹æ¹ýÀ» ÀÏ·¯ÁÖ¼¼¿ä.

CSplitterWnd¿¡¼­ »ó¼Ó¹ÞÀº ´Ù¸¥ Ŭ·¡½º¸¦ Çϳª »ý¼ºÇÏ°í, ´ÙÀ½°ú °°Àº ÇÔ¼ö¸¦ Çϳª ¸¸µì´Ï´Ù.

BOOL CSplitter::ReplaceView(int row, int col,
     CRuntimeClass *pViewClass, Size size)
{
     CCreateContext context;
     BOOL bSetActive;

     if((GetPane(row, col)->IsKindOf(pViewClass)) == TRUE)
          return FALSE;

     // CDocument *pDoc = GetParentFrame()->GetActiveDocument();

     // Get pointer to CDocument object so that it can be used
     // in the creation process of the new view

     CDocument *pDoc = ((CView *)GetPane(row, col))->GetDocument();
     CView *pActiveView = GetParentFrame()->GetActiveView();
     if(pActiveView == NULL || pActiveView == GetPane(row, col))
          bSetActive = TRUE;
     else
          bSetActive = FALSE;

     // set flag so that document will not be deleted when view is
     // destroyed
     pDoc->m_bAutoDelete = FALSE;

     // Delete existing view
     ((CView *)GetPane(row, col))->DestroyWindow();

     // set flag back to default
     pDoc->m_bAutoDelete = TRUE;

     // Create new view
     context.m_pNewViewClass = pViewClass;
     context.m_pCurrentDoc = pDoc;
     context.m_pNewDocTemplate = NULL;
     context.m_pLastView = NULL;
     context.m_pCurrentFrame = NULL;

     CreateView(row, col, pViewClass, size, &context);

     CView *pNewView = (CView *)GetPane(row, col);

     if(bSetActive == TRUE)
          GetParentFrame()->SetActiveView(pNewView);

     RecalcLayout();
     GetPane(row, col)->SendMessage(WM_PAINT);

     return TRUE;
}

 

<MDI¿¡¼­ Child LIST¸¦ ¾ò´Â ¹æ¹ý>

MDI ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛÇÏ°í ÀÖ½À´Ï´Ù. ±×·±µ¥ ÇÁ·Î±×·¥ ½ÇÇà Áß ÀÓÀÇÀÇ ½Ã°£¿¡ ¸ðµç ¿­·ÁÁø MDIÀÇ CHILD ³»¿ëÀ» ÁÖ±âÀûÀ¸·Î ÀúÀåÇÏ°í ½Í½À´Ï´Ù. ±×·¡¼­ Á¦ »ý°¢¿¡ ¸ðµç CHILD¿¡ 'Save Message' ¶Ç´Â ÇÔ¼ö¸¦ ÄÝÇÏ°íÀÚ ÇÕ´Ï´Ù. ²À ¸ðµç CHILD °¡ ¾Æ´Ñ °æ¿ìµµ Àִµ¥ ƯÁ¤ CHILD¸¦ ã¾Æ¼­ ÀÛ¾÷À» ÇÒ ¶§µµ ÀÖ½À´Ï´Ù. ÀÌ ¶§ ¾î¶»°Ô ¿øÇÏ´Â CHILD¸¦ ãÀ» ¼ö ÀÖ´ÂÁö¿ä?

 Áú¹®¿¡¼­ ÇöÀç MDI¸¦ ´ÜÀÏ ÅÛÇø´(Single Template)À¸·Î ±¸¼ºÇÑ °ÇÁö, ¸ÖƼ ÅÛÇø´(Multi Template)À¸·Î ±¸¼ºÇÑ °ÇÁö ¼³¸íµÅ ÀÖÁö ¾Ê¾Æ¼­ ÀÏ´Ü ¸ÖƼ ÅÛÇø´ÀÎ °æ¿ì¸¦ ±âÁØÀ¸·Î ¼³¸íÇÏ°Ú½À´Ï´Ù. ´ÜÀÏ ÅÛÇø´ÀÎ °æ¿ì´Â ¾ÕÀÇ ÅÛÇø´À» ã´Â ºÎºÐ ÀÌÇϸ¸ º¸¸é µË´Ï´Ù. ÀÏ´Ü ¿©·¯ ÅÛÇø´ÀÌ µî·ÏµÅ ÀÖ´Â °æ¿ì °¢ ÅÛÇø´Àº °íÀ¯ÀÇ À̸§À» °®½À´Ï´Ù. µû¶ó¼­ °¢ ÅÛÇø´ÀÇ Æ÷ÀÎÅ͸¦ ·çÇÁ(Loop)¿¡¼­ ¸ðµÎ À̸§À¸·Î °Ë»öÇØ Ã£½À´Ï´Ù. ÄÚµå´Â ´ÙÀ½°ú °°Àº ÇüÅ°¡ µÇ°Ú½À´Ï´Ù.

POSITION curTemplatePos = GetFirstDocTemplatePosition();
while(curTemplatePos != NULL) {
     CDocTemplate* curTemplate = GetNextDocTemplate(curTemplatePos);
     CString str;
     curTemplate->GetDocString(str, CDocTemplate::docName);
     if(str == sDocName)
        ´ÙÀ½ ó¸®.....
}

 ±× ´ÙÀ½ ÇϳªÀÇ ÅÛÇø´ÀÌ °áÁ¤µÇ¸é ÇØ´ç ÅÛÇø´ ¾Æ·¡ÀÇ °¢ µµÅ¥¸ÕÆ®¸¦ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ã¾Æ³À´Ï´Ù. ±× ÇÔ¼ö´Â GetFirstDocPosition() °ú GetNextDoc Àε¥ À§ÀÇ ÅÛÇø´À» ãÀ» ¶§¿Í °°Àº ¹æ¹ýÀ¸·Î ·çÇÁ¿¡¼­ ãÀ¸¸é µË´Ï´Ù. ÀÌ ¶§ ã´Â ±âÁØÀº Á÷Á¢ ¸¸µé¾î¾ß ÇÕ´Ï´Ù(º¯¼ö¸¦ »ç¿ëÇϰųª À©µµ¿ì ŸÀÌƲ·Î ÇϵçÁö ÇÏ¸é µË´Ï´Ù). ±× ´ÙÀ½ ¸¸¾à ÇØ´ç µµÅ¥¸ÕÆ®ÀÇ ºä(View)¿¡ Á¢±ÙÇÏ°íÀÚ ÇÒ ¶§´Â µµÅ¥¸ÕÆ®´ç Çϳª ÀÌ»óÀÇ ºä°¡ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î ¶Ç´Ù½Ã °°Àº ·ÎÁ÷À¸·Î ´ÙÀ½ÀÇ ÇÔ¼öµéÀ» »ç¿ëÇØ ºä Æ÷ÀÎÅÍ(View Pointer)¸¦ ¾òÀ¸¸é µË´Ï´Ù.

GetFirstViewPosition(), GetNextView

 ¹°·Ð ·çÇÁ¿¡¼­ Çϳª¾¿ °Ë»öÇØ¾ß ÇÕ´Ï´Ù. º¸ÅëÀÇ °æ¿ì ÇϳªÀÇ µµÅ¥¸ÕÆ®¿¡ ÇϳªÀÇ ºäÀ̴ϱî ù° ºä Æ÷ÀÎÅ͸¦ ±×³É »ç¿ëÇÏ¸é µË´Ï´Ù.

 

<CEdit¿¡¼­ ¿£ÅÍÅ° °¨ÁöÇϱâ>

¿¡µðÆ® ÄÁÆ®·Ñ¿¡¼­ ¿£ÅÍÅ°¸¦ °¨ÁöÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ½Í½À´Ï´Ù.

±âÁ¸ ÄÁÆ®·Ñ¿¡ Áú¹®ÇÑ °Í°ú °°ÀÌ ¾î¶² ´Ù¸¥ ±â´ÉÀ» ³Ö°íÀÚ ÇÒ °æ¿ì´Â ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î´Â µÇÁö ¾Ê½À´Ï´Ù. °¡Àå ½±°Ô ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ¸·Î´Â SubClassing ±â¹ýÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. ¼­ºêŬ·¡½º¶õ ¾î¶² °´Ã¼(Object)¿¡¼­ ¹ß»ýÇÏ´Â ¸ðµç ¸Þ½ÃÁö¸¦ ¾î¶² ´Ù¸¥ Ŭ·¡½ºÀÇ °´Ã¼·Î º¸³¾ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀε¥(Á¤È®ÇÑ Àǹ̴ ¾Æ´ÏÁö¸¸), CWnd::SubClassDlgItem ÇÔ¼ö¸¦ »ç¿ëÇØ ¼­ºêŬ·¡½ÌÇÏ¸é µË´Ï´Ù.

 ¹æ¹ýÀº CEdit Ŭ·¡½º¿¡¼­ »ó¼Ó¹ÞÀº »õ·Î¿î Ŭ·¡½º¸¦ ¸¸µé°í ÇØ´ç Ŭ·¡½º¿¡¼­ Å°ÀÔ·Âó¸® Member ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵åÇØ ¿£ÅÍÅ° 󸮸¦ ÇØ ÁÝ´Ï´Ù. ±× ´ÙÀ½ »õ·Î ¸¸µç Ŭ·¡½ºÀÇ °´Ã¼·Î ¿øÇÏ´Â ¿¡µðÆ® ÄÁÆ®·ÑÀ» ¼­ºêŬ·¡½ºÇØ Áֱ⠹ٶø´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿£ÅÍÅ° »Ó¸¸ ¾Æ´Ï¶ó ¿ø·¡ ÄÁÆ®·ÑÀÌ °¡Áö´Â µðÆúÆ® ±â´ÉÀ» ¿øÇϴ´ë·Î ¹Ù²Ü ¼ö ÀÖ°Ô µË´Ï´Ù.

- the end of this article -