|
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 - |