'°´Ã¼ »ðÀÔ' »óÀÚ ¾øÀÌ °´Ã¼ »ðÀÔÇϱâ


1.¿ä¾à

MFC OLE Client ·Î OLE Container ³ª OLE ¼­¹ö ÇÁ·Î±×·¥À» ¸¸µé¶§¿¡´Â ÀÏ¹Ý ¿öµå ÆÐµå¿¡¼­¿Í´Â ´Þ¸® '°´Ã¼ »ðÀÔ' »óÀÚ¾øÀÌ °´Ã¼¸¦ »ðÀÔÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.


2.º»¹®

±âº»ÀûÀ¸·Î MFC AppWizard·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇϸé, MFC ´Â OLE °´Ã¼¸¦ »ðÀÔÇÒ¶§ COleInsertDialog ¸¦ Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù. ¶ÇÇÑ ½ÇÁ¦·Î °´Ã¼¸¦ »ðÀÔÇÒ¶§´Â CreateItem() ¶ó´Â ÇÔ¼ö¸¦ È£ÃâÇϴµ¥, ÀÌ ÇÔ¼öÀÇ core ¼Ò½º¸¦ »ìÆìº¸½Ã¸é, ÇÁ·Î±×·¥ÀûÀ¸·Î °´Ã¼¸¦ »ðÀÔÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ ¼Ò½º¸¦ º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸, °´Ã¼¸¦ °ü¸®ÇØ ÁÖ´Â OLE Class °¡ ÀÌ¹Ì MFC ¿¡¼­ Á¦°øµÇ°í Àִµ¥(COleClientItem) ÀÌ Å¬·¡½º¿¡ º¸¸é °´Ã¼ »ðÀÔ°ú °ü·ÃµÈ ¼ö¸¹Àº ÀÛ¾÷µé(¿¹, ÆÄÀÏ·Î ºÎÅÍ »ðÀÔ, »õ·Î¿î °´Ã¼ »ðÀÔ, °´Ã¼ Link µî..)À» ÇØÁÖ´Â ÇÔ¼öµéÀÌ Á¦°øµÇ°í ÀÖ½À´Ï´Ù. »ùÇà Äڵ尡 Á¦°øµÇ°í Àִµ¥, °£´ÜÇÕ´Ï´Ù.


3.¿¹Á¦


// COleInsertDialog::CreateItem() ÇÔ¼öÀÇ ÇÙ½É ·çƾ 



//*******Begin Excerpt******* 

switch (selType) 

{ 

case linkToFile: 

    // link to file selected 

    ASSERT(m_szFileName[0] != 0); 

    bResult=pNewItem->CreateLinkFromFile(m_szFileName); 

    break; 

    

case insertFromFile: 

    // insert file selected 

    ASSERT(m_szFileName[0] != 0); 

    bResult=pNewItem->CreateFromFile(m_szFileName); 

    break; 

    

default: 

    // otherwise must be create new 

    ASSERT(selType == createNewItem); 

    bResult=pNewItem->CreateNewItem(m_io.clsid); 

    break; 

} 



//*******End Excerpt******* 





///////////////////////////////// 





///////////////////////////////// 

// Sample Code 

///////////////////////////////// 

// Compile options needed : None 





void CMyView::OnInsertObject() 

{ 

    

    BeginWaitCursor(); 

    

    CMyOleClientItem* pItem = NULL; 

    TRY 

    { 

        // Create new item connected to this document. 

        CMyDoc* pDoc = GetDocument(); 

        ASSERT_VALID(pDoc); 

        pItem = new CMyOleClientItem(pDoc); 

        ASSERT_VALID(pItem); 

        

        // Get Class ID for Excel sheet 

        // This is used in creation 

        CLSID clsid; 

        if(FAILED(::CLSIDFromProgID("Excel.Sheet",&clsid))) 

            AfxThrowMemoryException(); 

        

        // Create the Excel embedded item 

        if(!pItem->CreateNewItem(clsid)) 

            AfxThrowMemoryException();  // any exception will do 

        ASSERT_VALID(pItem); 

        

        // Launch the server to edit the item. 

        pItem->DoVerb(OLEIVERB_SHOW, this); 

        

        ASSERT_VALID(pItem); 

        

        // As an arbitrary user interface design, this sets the 

        // selection to the last item inserted. 

        

        // TODO: reimplement selection as appropriate for your 

        // application 

        

        m_pSelection = pItem;   // set selection to last inserted item 

        pDoc->UpdateAllViews(NULL); 

    } 

    CATCH(CException, e) 

    { 

        if (pItem != NULL) 

        { 

            ASSERT_VALID(pItem); 

            pItem->Delete(); 

        } 

        AfxMessageBox(IDP_FAILED_TO_CREATE); 

    } 

    END_CATCH 

        

        EndWaitCursor(); 

} 

4.Âü°í

MSND : Q137357

[ÁÖÀÇ] À§ÀÇ ¼Ò½º ÄÚµå Áß¿¡¼­ ::CLSIDFromProgID() ÇÔ¼öÀÇ Ã¹¹øÂ° ÀÎÀÚ¸¦ LPCSTR ·Î »ç¿ëÇϰí Àִµ¥, ÀÌ ºÎºÐÀº A2COLE() ¶ó´Â ¸ÅÅ©·Î·Î Çüº¯È¯À» ÇØÁÖ¾î¾ß Á¤»óÀûÀ¸·Î CLSID ¸¦ ¾ò¾î¿É´Ï´Ù.

¿¹)



USES_CONVERSION; // Çüº¯È¯ ¸ÅÅ©·Î »ç¿ë 



if(FAILED(::CLSIDFromProgID(A2COLE("MPlayer"),&clsid))) 

    AfxThrowMemoryException(); 



- 2001.08.13 Smile Seo -