MFC/OLE 2 TN041: MFC/OLE1 ¸¶À̱׷¹À̼Ç

¸¶À̱׷¹À̼ǿ¡ °ü·Ã µÈ ÀϹÝÀûÀÎ ¹®Á¦

MFC 2.5¿¡¼­ (¹× ³ôÀº) OLE 2 Ŭ·¡½ºÀÇ µðÀÚÀÎ ¸ñÇ¥ Áß Çϳª´Â ¸¹Àº OLE 1.0 Áö¿ø¿¡ ´ë ÇÑ MFC 2.0¿¡¼­ Àå¼Ò¿¡ µ¿ÀÏÇÑ ¾ÆÅ°ÅØÃ³¸¦ À¯Áö Çß´Ù. ±× °á°ú, MFC 2.0¿¡¼­ °°Àº OLE Ŭ·¡½ºÀÇ ¸¹Àº ¿©ÀüÈ÷ MFC (COleDocument, COleServerDoc, COleClientItem, COleServerItem)ÀÇÀÌ ¹öÀü¿¡ Á¸ÀçÇÕ´Ï´Ù. ¶ÇÇÑ, ÀÌ·¯ÇÑ Å¬·¡½º¿¡¼­ Api ¸¹Àº Á¤È®È÷ µ¿ÀÏ ÇÕ´Ï´Ù. ±×·¯³ª, OLE 2 À̹ǷΠOLE 1.0¿¡¼­ Å©°Ô ´Ù¸¥ ³»¿ëÀÇ ÀϺΠº¯°æ µÇ¾ú½À´Ï´Ù ±â´ëÇÒ ¼ö ÀÖ½À´Ï´Ù. MFC 2.0Àº Áö¿ø¿¡ Àß ¾Ë°í ÀÖ´Ù¸é, ´ç½ÅÀº Áý¿¡¼­ MFCÀÇ 2.0 Áö¿ø ´À³¥ °Å ¾ß¡£

±âÁ¸ MFC/Àº ÀÀ¿ë ÇÁ·Î±×·¥À» º¹¿ë ÇÏ °í OLE 2 ±â´É Ãß°¡,ÀÌ ³ëÆ®¸¦ ¸ÕÀú Àоî¾ß ÇÑ´Ù. ÀÌ ³ëÆ® MFC/OLE 2Àº ±â´ÉÀ» ÀÌ½Ä ÇÏ´Â µ¿¾È ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù ¹× ´ÙÀ½ MFC 2.0¿¡ Æ÷ÇÔ µÈ µÎ °³ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÌ½Ä ÇÏ´Â µ¿¾È ¹ß°ß ÇÏ´Â ¹®Á¦¿¡ ¼³¸í ÇÕ´Ï´Ù ¸î °¡Áö ÀϹÝÀûÀÎ ¹®Á¦¸¦ ´Ù·ì´Ï´Ù: MFC OLE »ùÇà OCLIENT ¹× HIERSVR¡£

MFC ¹®¼­/ºä ¾ÆÅ°ÅØÃ³´Â Áß¿ä ÇÑ

ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ MFCÀÇ ¹®¼­/ºä ¾ÆÅ°ÅØÃ³¸¦ »ç¿ë ÇÏÁö ¾Ê´Â ÀÀ¿ë ÇÁ·Î±×·¥¿¡ OLE 2 Áö¿øÀ» Ãß°¡ ÇÏ·Á´Â °æ¿ì Áö±Ý ¹®¼­/ºä¸¦ À̵¿ ÇÏ´Â ½Ã°£ÀÌÀÔ´Ï´Ù. MFCÀÇ OLE 2 Ŭ·¡½ºÀÇ ÇýÅÃÀÇ ¸¹Àº ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ±âº» ¾ÆÅ°ÅØÃ³ ¹× MFCÀÇ ±¸¼º ¿ä¼Ò¸¦ »ç¿ë ÇÏ´Â ÀÏ´Ü ½ÇÇö¸¸ µË´Ï´Ù.

MFC ¾ÆÅ°ÅØÃ³¸¦ »ç¿ë ÇÏÁö ¾Ê°í ¼­¹ö ¶Ç´Â ÄÁÅ×À̳ʸ¦ ±¸Çö ÇÏ´Â ¹æ¹ýÀÌ °¡´É ÇÏÁö¸¸ ±ÇÀå ÇÏÁö ¾ÊÀ½¡£

°í°´´Ô ´ë½Å MFC ±¸Çö »ç¿ë

MFC "ÅëÁ¶¸² ±¸Çö" CToolBar, CStatusBar, CScrollView ¿Í °°Àº Ŭ·¡½º´Â OLE 2 Áö¿ø¿¡ ´ë ÇÑ Æ¯º° ÇÑ °æ¿ì Äڵ带 ³»Àå. µû¶ó¼­, ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ÀÌ·¯ÇÑ Å¬·¡½º¸¦ »ç¿ë ÇÏ´Â °æ¿ì ±×µé OLE ÀÎ½Ä ÇÏ °Ô ±×µé ³Ö¾î ³ë·Â¿¡¼­ ll ÀÌÁ¡. ´Ù½Ã ¸»ÇÏÁö¸¸, ÀÌ·¯ÇÑ ¸ñÀûÀ» À§ÇØ "·Ñ-³×-ÀÚ½ÅÀÇ" Ŭ·¡½º´Â ¿©±â °¡´É ÇÏ´Ù ÇÏÁö¸¸ ±ÇÀå ÇÏÁö. MFC ¼Ò½º ÄÚµå (ƯÈ÷¿¡ °üÇØ¼­ Ȱ¼ºÈ­ Àå¼Ò) OLEÀÇ ¹Ì¼¼ÇÑ Á¡ Áß ÀϺθ¦ ´Ù·ç´Â ¿ì¼öÇÑ ÂüÁ¶ÀÔ´Ï´Ù À¯»çÇÑ ±â´ÉÀ» ±¸Çö ÇØ¾ß ÇÏ´Â °æ¿ì¡£

MFC »ùÇà ÄÚµå °Ë»ç

OLE ±â´ÉÀ» Æ÷ÇÔ ÇÏ´Â MFC »ùÇà ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °¢ ´Ù¸¥ °¢µµ¿¡¼­ OLE ±¸Çö:

HIERSVR -¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î »ç¿ë Çϱâ À§ÇØ ÁÖ·Î ÀÇ¹Ì ÇÕ´Ï´Ù. ±×°ÍÀº MFC/Àº ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î MFC 2.0¿¡ Æ÷ÇÔ µÈ ¹× MFC/OLE 2·Î ÀÌ½Ä µÇ¾úÀ¸¸ç ´ÙÀ½ OLE 2¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸¹Àº OLE ±â´ÉÀ» ±¸Çö ÇÏ´Â È®Àå¡£

OCLIENT -ÄÁÅ×À̳ÊÀÇ °üÁ¡¿¡¼­ ´Ù¾ç ÇÑ OLE ±â´ÉÀ» ÀÔÁõ ÇÏ´Â °ÍÀ» ÀÇ¹Ì ÇÏ´Â µ¶¸³ ½ÇÇàÇü ÄÁÅ×ÀÌ³Ê ÀÀ¿ë ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ±×°ÍÀº ³Ê¹« MFC 2.0¿¡¼­ Æ÷ÆÃ Çß´Ù ´ÙÀ½ ´Ù¾ç ÇÑ »ç¿ëÀÚ ÁöÁ¤ Ŭ¸³º¸µå Çü½Ä ¹× Æ÷ÇÔ µÈ Ç׸ñ¿¡ ¸µÅ©¿Í °°Àº ´õ ¸¹Àº °í±Þ OLE ±â´ÉÀ» Áö¿ø Çϵµ·Ï È®Àå ÇÏ´Â °í¡£

DRAWCLI -ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥ OCLIENT ó·³ ±âÁ¸ °³Ã¼ ÁöÇ⠱׸®±â ÇÁ·Î±×·¥ÀÇ Æ² ¾È¿¡¼­ ¼öÇà ÇÑ´Ù´Â Á¡À» Á¦¿Ü Çϸé OLE ÄÁÅ×ÀÌ³Ê Áö¿ø ¸¹ÀÌ ±¸Çö ÇÕ´Ï´Ù. OLE ÄÁÅ×ÀÌ³Ê Áö¿øÀ» ±¸Çö ÇÏ °í ±âÁ¸ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÅëÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

SUPERPAD -µÇ °í Àß µ¶¸³ ½ÇÇàÇü ÀÀ¿ë ÇÁ·Î±×·¥À» »Ó ¾Æ´Ï¶óÀÌ ÀÀ¿ë ÇÁ·Î±×·¥Àº OLE ¼­¹ö À̱⵵ ÇÕ´Ï´Ù. ±×°ÍÀ» ±¸Çö ÇÏ´Â ¼­¹ö Áö¿ø ²Ï ÃÖ¼Ò ÀÌ´ÙÀÔ´Ï´Ù. ƯÈ÷ °ü½ÉÀÇ ¹æ¹ý ±×°Í OLE Ŭ¸³º¸µå ¼­ºñ½º¸¦ »ç¿ë ÇÏ ¿© µ¥ÀÌÅ͸¦ Ŭ¸³º¸µå¿¡ º¹»ç ÇÏÁö¸¸ Windows¿¡ ³»Àå µÈ ±â´ÉÀ» »ç¿ë ÇÏ ¿© "ÆíÁý" Ŭ¸³º¸µå ºÙ¿©³Ö±â ±â´ÉÀ» ±¸Çö ÇÏ´Â ÄÁÆ®·Ñ. À̰ÍÀº ÀüÅëÀûÀÎ Windows API »ç¿ë »Ó¸¸ ¾Æ´Ï¶ó »õ·Î¿î OLE Api¿ÍÀÇ ÅëÇÕÀÇ Èï¹Ì·Î¿î ¹Í½º¸¦ º¸¿©ÁÝ´Ï´Ù.

»ùÇà ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÇØ´ç MFC »ùÇà "µµ¿ò¸»"À» ÂüÁ¶ ÇϽʽÿÀ.

»ç·Ê ¿¬±¸: OCLIENT MFC 2.0¿¡¼­

À§¿¡¼­ ¼³¸íÇÑ °Í ó·³ OCLIENT MFC 2.0¿¡ Æ÷ÇÔ µÈ ¹× MFC/OLE1 ÇÔ²² OLE ±¸Çö. ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥Àº óÀ½ º¯È¯ MFC/OLE 2 Ŭ·¡½º¸¦ »ç¿ë ÇÏ´Â ´Ü°è¿¡ ´ë ÇÑ ¼³¸íÀÔ´Ï´Ù. ÃÊ±â Æ÷Æ® MFC/OLE Ŭ·¡½º¸¦ ¼³¸í Çϱâ À§ÇØ ´õ ³ªÀº ¿Ï·á µÈ ÈÄ¿¡ ´Ù¾ç ÇÑ ±â´ÉÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº ¿©±â; Àû¿ë µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °í±Þ ±â´É¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¿¹Á¦¸¦ ÂüÁ¶ ÇϽʽÿÀ¡£

¸Þ¸ðnbsp;??ÄÄÆÄÀÏ·¯ ¿À·ù ¹× ´Ü°èº° °úÁ¤Àº Visual c + + 2.0À¸·Î ¸¸µé¾îÁ³½À´Ï´Ù. Visual c + + 4.0, ƯÁ¤ ¿À·ù ¸Þ½ÃÁö¿Í À§Ä¡ º¯°æ µÇ¾úÀ» ¼ö ÀÖ½À´Ï´Ù ÇÏÁö¸¸ °³³ä Á¤º¸ À¯È¿ ÇÏ °Ô À¯Áö(&N)¡£

Áö °í ½ÇÇà

OCLIENT »ùÇÃÀ» MFC/OLE Æ÷Æ® ÃÔ¿µ ¹æ¹ýÀº °Ç¹°°ú µÉ »·ÇÑ ÄÄÆÄÀÏ·¯ ¿À·ù¸¦ ¼öÁ¤ ÇÏ ¿© ½ÃÀÛ ÇÕ´Ï´Ù. MFC 2.0¿¡¼­ OCLIENT »ùÇÃÀ»°¡Áö°íÀÌ ¹öÀüÀÇ MFC¿¡¼­ ÄÄÆÄÀÏ ÇÏ´Â °æ¿ì °Å±â¿¡ ¾ø´Â ¸¹Àº ¿À·ù¸¦ ÇØ°á ÇÏ·Á¸é ãÀ» °Å ¾ß. ¾Æ·¡ ¼ø¼­ ´ë·Î ¹ß»ý ÇÏ´Â ¿À·ù¸¦ ¼³¸í Çϴ¡£

ÄÄÆÄÀÏ ¹× ¿À·ù ¼öÁ¤

\oclient\mainview.cpp(104): ¿À·ù C2660: '¹«½ÂºÎ': ÇÔ¼ö 4 ¸Å°³ º¯¼ö¸¦ ¹ÞÁö ¾Ê½À´Ï´Ù

ù ¹øÂ° ¿À·ù COleClientItem::Draw¿ì·Á. MFC/Àº MFC/OLE ¹öÀüÀº º¸´Ù ´õ ¸¹Àº ¸Å°³ º¯¼ö°¡ Çß´Ù. Ãß°¡ ¸Å°³ º¯¼ö°¡ ÇÊ¿ä ÇÏ °í ÀϹÝÀûÀ¸·Î NULL (ÀÌ ¿¹¿¡¼­)¿¡¼­ ÀÚÁÖ ÇÏÁö Çß´Ù. ÀÌ ¹öÀüÀÇ MFC ÀÚµ¿À¸·Î ¶§¿¡ ±×·ÁÁø µÇ °í CDC ¸ÞŸ ÆÄÀÏ DC´Â Lpwbounds¿¡ ´ë ÇÑ °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ÀÌÈÄ ÇÁ·¹ÀÓ ¿öÅ© ±¸Ãà "DC"ÀÇ Æ¯¼º¿¡ Àü´Þ ÇÏ´Â Pdc¿¡¼­ pFormatDC ¸Å°³ º¯¼ö´Â ÇÊ¿ä ÀÌ»ó. ÀÌ ¹®Á¦¸¦ ÇØ°á ÇÏ·Á¸é ´Ü¼øÈ÷ µÎ Á¦°Å ±×·¡¼­ ¿©ºÐÀÇ ±×¸®±â È£Ãâ¿¡ ¸Å°³ º¯¼ö¸¦ NULL¡£

\oclient\mainview.cpp(273): ¿À·ù C2065: 'OLE_MAXNAMESIZE': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\mainview.cpp(273): C2057 ¿À·ù: ¿¹»ó »ó¼ö ½Ä
\oclient\mainview.cpp(280): ¿À·ù C2664: 'CreateLinkFromClipboard': º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù ¸Å°³ º¯¼ö 1 'char [1]'¿¡¼­ ' enum:: tagOLERENDER '
\oclient\mainview.cpp(286): ¿À·ù C2664: 'CreateFromClipboard': º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù ¸Å°³ º¯¼ö 1 'char [1]'¿¡¼­ ' enum:: tagOLERENDER '
\oclient\mainview.cpp(288): ¿À·ù C2664: 'CreateStaticFromClipboard': º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù ¸Å°³ º¯¼ö 1 'char [1]'¿¡¼­ ' enum:: tagOLERENDER '

À§ÀÇ ¿À·ù¸¦ Ç׸ñÀ» ³ªÅ¸³»´Â °íÀ¯ÇÑ À̸§À» Àü´Þ µÉ ÇÊ¿äÇÑ ¸ðµç MFC/Àº COleClientItem::CreateXXXX ±â´É »ç½Ç¿¡¼­ ±âÀÎ ÇÕ´Ï´Ù. À̰ÍÀº ±âº» OLE API ¿ä±¸ Çß´Ù. ÀÌ ¶§¹®¿¡ OLE 2 (À̸§À» DDE ´ëÈ­¿¡ »ç¿ë µÇ¾ú´Ù) ±âº» Åë½Å ¸ÞÄ¿´ÏÁòÀ¸·Î DDE¸¦ »ç¿ë ÇÏÁö ¾Ê´Â MFC/OLE 2¿¡¼­ ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°á ÇÏ·Á¸é CreateNewName ÇÔ¼ö¸¦ ´ë ÇÑ »Ó¸¸ ¾Æ´Ï¶ó ¸ðµç ÂüÁ¶¸¦ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×°ÍÀº °¢ MFC/OLE ÇÔ¼ö´Â ¿¹»óÀÌ ¹öÀü¿¡¼­´Â ´Ü¼øÈ÷ ÀüÈ­¿¡ Ä¿¼­¸¦ ³õ°í F1 ۸¦ ´©¸£¸é ÇÏ ¿© ½±°Ô¡£

Å©°Ô ´Ù¸¥ ¶Ç ´Ù¸¥ ¿µ¿ªÀº OLE 2 Ŭ¸³º¸µå ó¸®ÀÔ´Ï´Ù. OLE1¿Í Ŭ¸³º¸µå¿Í »óÈ£ ÀÛ¿ë ÇÏ´Â Api´Â Windows Ŭ¸³º¸µå¸¦ »ç¿ë ÇÕ´Ï´Ù. OLE 2ÀÌ ´Ù¸¥ ¸ÞÄ¿´ÏÁòÀ¸·Î ÀÌ·ç¾îÁý´Ï´Ù. MFC/OLE1 Api´Â Ŭ¸³º¸µå COleClientItem °³Ã¼¸¦ Ŭ¸³º¸µå¿¡ º¹»ç Çϱâ Àü¿¡ ¿­·Á °¡Á¤ ÇÕ´Ï´Ù. À̰ÍÀº ´õ ÀÌ»ó ÇÊ¿ä ÇÏ °í ¸ðµç MFC/OLE Ŭ¸³º¸µå ÀÛ¾÷ÀÌ ½ÇÆÐ Çϸé. CreateNewName¿¡ ´ë ÇÑ Á¾¼Ó¼ºÀ» Á¦°Å ÇÏ´Â Äڵ带 ÆíÁý ÇÏ´Â µ¿¾È¿¡ Äڵ带 ¿­¸®°í ´ÝÈü´Ï´Ù Windows Ŭ¸³º¸µå Á¦°Å ÇØ¾ß¡£

\oclient\mainview.cpp(332): ¿À·ù C2065: 'AfxOleInsertDialog': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\mainview.cpp(332): ¿À·ù C2064: ¿ë¾î´Â ÇÔ¼ö¿¡ °è»ê ÇÏÁö ¾Ê½À´Ï´Ù
\oclient\mainview.cpp(344): C2057 ¿À·ù: ¿¹»ó »ó¼ö ½Ä
\oclient\mainview.cpp(347): ¿À·ù C2039: 'CreateNewObject': 'CRectItem'ÀÇ ±¸¼º¿øÀÌ ¾Æ´Õ´Ï´Ù

CMainView::OnInsertObject 󸮱⿡¼­ ÀÌ·¯ÇÑ ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù. "»õ °³Ã¼ »ðÀÔ" ¸í·É ó¸® ¿µ¿ªÀÌ ´Ù¸¥ °Í µéÀ» Á¶±Ý º¯°æ µÇ¾ú½À´Ï´Ù. ÀÌ °æ¿ì ´Ü¼øÈ÷ »õ OLE ÄÁÅ×ÀÌ³Ê ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ ¸¶¹ý»ç°¡ Á¦°ø ÇÏ´Â ¿ø·¡ ±¸Çö º´ÇÕ ½±½À´Ï´Ù. »ç½Ç, À̰ÍÀº ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥ À̽Ŀ¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ±â¼úÀÔ´Ï´Ù. MFC/Àº AfxOleInsertDialog ÇÔ¼ö¸¦ È£Ãâ ÇÏ ¿© "»ðÀÔ °³Ã¼" ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã ÇÕ´Ï´Ù. ÀÌ ¹öÀü¿¡¼­ COleInsertObject dialog °³Ã¼¸¦ ±¸¼º ÇÏ °í DoModalÀ» È£Ãâ ÇÕ´Ï´Ù. ¶ÇÇÑ, »õ OLE Ç׸ñ classname ¹®ÀÚ¿­ ´ë½Å CLSID ¸¦ »ç¿ë ÇÏ ¿© ¸¸µé¾îÁý´Ï´Ù. ÃÖÁ¾ °á°úÀÌ °°Àº °ÍÀ» º¸¾Æ¾ß ÇÑ´Ù

COleInsertDialog dlg;
°æ¿ì (dlg.DoModal()! = IDOK)
 nbsp;? ¹Ýȯ;

BeginWaitCursor();

CRectItem * pItem = NULL;
½Ãµµ
{
 ?? / / ¸ÕÀú c + + °³Ã¼¸¦ ¸¸µì´Ï´Ù
 ?? pItem = GetDocument()-> CreateItem();
 ?? ASSERT_VALID(pItem);

/ / ´ëÈ­ µ¥ÀÌÅÍ¿¡¼­ Ç׸ñÀ» ÃʱâÈ­ ÇÕ´Ï´Ù.
 ?? °æ¿ì (! dlg.CreateItem(pItem))
 ?????? AfxThrowMemoryException();
 ????????? / / Á¦¿ÜÇÒ ÇÒ °ÍÀÔ´Ï´Ù
 ?? ASSERT_VALID(pItem);
 ?????? 
 ?? / / °³Ã¼¸¦ ½ÇÇà ÇÏ´Â °æ¿ì ÀûÀý ÇÑ
 ?? °æ¿ì (dlg.GetSelectionType() = = COleInsertDialog::createNewItem)
 ?????? pItem-> DoVerb(OLEIVERB_SHOW, this);
 ?????? 
 ?? / / Áï½Ã ¾÷µ¥ÀÌÆ®
 ?? pItem-> UpdateLink();
 ?? pItem-> UpdateItemRectFromServer();
 ?????? 
 ?? / / »õ·Î »ðÀÔµÈ µÈ Ç׸ñÀ» ¼±Åà ¼³Á¤
 ?? SetSelection(pItem);
 ?? pItem-> Invalidate();
}
CATCH (CException, e)
{/ / Ç׸ñ Á¤¸®
 ?? °æ¿ì (pItem! = NULL)
 ?????? GetDocument()-> DeleteItem(pItem);
 ?????????? 
 ?? AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
 ?? 
EndWaitCursor()

¸Þ¸ðnbsp;??»ðÀÔ »õ °³Ã¼´Â ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù)(&N):

±×°ÍÀº ¶ÇÇÑ lt;afxodlgs.h¸¦ Æ÷ÇÔ ÇÏ´Â µ¥ ÇÊ¿äÇÑ > COleInsertObject ´ëÈ­ »óÀÚ Å¬·¡½º »Ó ¾Æ´Ï¶ó MFC Á¦°øÇÑ ´Ù¸¥ Ç¥ÁØ ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ ¼±¾ðÀ» Æ÷ÇÔ Çϴ¡£

\oclient\mainview.cpp(367): ¿À·ù C2065: 'OLEVERB_PRIMARY': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\mainview.cpp(367): ¿À·ù C2660: 'DoVerb': ÇÔ¼ö 1 ¸Å°³ º¯¼ö¸¦ ¹ÞÁö ¾Ê½À´Ï´Ù

°³³äÀº µ¿ÀÏ ÇÏ´õ¶óµµ ÀÌ·¯ÇÑ ¿À·ù OLE 2¿¡¼­ ÀϺΠOLE1 »ó¼ö º¯°æ »ç½Ç¿¡ ±âÀÎÇÑ ´Ù. ÀÌ °æ¿ì OLEVERB_PRIMARY ´Â OLEIVERB_PRIMARY·Î º¯°æ µÇ¾ú½À´Ï´Ù. OLE1 ¹× OLE 2¿¡¼­ ±âº» µ¿»ç´Â ÀϹÝÀûÀ¸·Î ½ÇÇà ÄÁÅ×À̳ʿ¡ ÀÇÇØ Ç׸ñ¿¡ Ŭ¸¯ÇÒ ¶§¡£

DoVerb ¿©ºÐÀÇ ¸Å°³ º¯¼ö¸¦ »ç¿ë ÇÏ´Â À̿ܿ¡ ÀÌÁ¦ ? º¸±â¿¡ ´ë ÇÑ Æ÷ÀÎÅÍ (CView*). ÀÌ ¸Å°³ º¯¼ö´Â¸¸ "ºñÁÖ¾ó ÆíÁý" (¶Ç´Â ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­)¸¦ ±¸Çö ÇÏ´Â µ¥ »ç¿ë µË´Ï´Ù. ÀÌÁ¦ ´ç½ÅÀº ¸Å°³ º¯¼ö¸¦ NULL·Î ¼³Á¤ ¶§¹®¿¡ÀÌ ½ÃÁ¡¿¡¼­ÀÌ ±â´ÉÀ» ±¸Çö ÇÏÁö´Â¡£

ÇÁ·¹ÀÓ ¿öÅ©¸¦ °áÄÚ ½Ãµµ-Àå¼Ò¸¦ Ȱ¼ºÈ­ ÇÏ´Â ÀÖ´ÂÁö È®ÀÎ ÇÏ·Á¸é, ´ç½ÅÀº ´ÙÀ½°ú °°Àº COleClientItem::CanActivate À» ÀçÁ¤ÀÇ ÇØ¾ß

 BOOL CRectItem::CanActivate()
{
 nbsp;? FALSE; ¹Ýȯ
}

\oclient\rectitem.cpp(53): ¿À·ù C2065: 'GetBounds': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\rectitem.cpp(53): ¿À·ù C2064: ¿ë¾î´Â ÇÔ¼ö¿¡ °è»ê ÇÏÁö ¾Ê½À´Ï´Ù
\oclient\rectitem.cpp(84): ¿À·ù C2065: 'SetBounds': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\rectitem.cpp(84): ¿À·ù C2064: ¿ë¾î´Â ÇÔ¼ö¿¡ °è»ê ÇÏÁö ¾Ê½À´Ï´Ù(&N)

MFC/Àº COleClientItem::GetBounds ¹× SetBounds Äõ¸®Çϰí ( ¿ÞÂÊ ¹× À§ÂÊ ±¸¼º¿øÀº Ç×»ó 0) Ç׸ñÀÇ ¹üÀ§¸¦ Á¶ÀÛ ÇÏ´Â µ¥ »ç¿ë Çß´Ù. COleClientItem::GetExtent ¹× SetExtent, Å©±â ¶Ç´Â CSize ´ë½Å °Å·¡ Áö¿ø ´õ Á÷Á¢ÀûÀÌ MFC/OLE 2¡£

»õ·Î¿î Setitemrecttoserver¿¡ ´ë ÇÑ ÄÚµå ¹× UpdateItemRectFromServer È£ÃâÀÌ Ã³·³ º¸ÀÌ´Â:

BOOL CRectItem::UpdateItemRectFromServer()
{
 nbsp; ASSERT(m_bTrackServerSize);
 ? CSize Å©±â;
 ? if (!.GetExtent(&size))
 ???? FALSE; ¹Ýȯ??? / ºó /

/ / È­¸é ÁÂÇ¥¿¡¼­ HIMETRIC Áöµµ
 ? {
 ???? CClientDC screenDC(NULL);
 ???? screenDC.SetMapMode(MM_HIMETRIC);
 ???? screenDC.LPtoDP(&size);
 ? }
 ? / / ±×³É Ç׸ñ Å©±â ¼³Á¤
 ? °æ¿ì (m_rect.Size()! = Å©±â)
 ? {
 ???? / / Å©±â/À§Ä¡¸¦ ¹«È¿È­
 ???? Invalidate();
 ???? m_rect.right = m_rect.left + size.cx;
 ???? m_rect.bottom = m_rect.top + size.cy;
 ???? / / »Ó »õ·Î¿î Å©±â/À§Ä¡
 ???? Invalidate();
 ? }
 ? TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.
}

BOOL CRectItem::SetItemRectToServer()
{
 ? / / Æ÷ÇÔµÈ µÈ Ç׸ñ¿¡ ´ë ÇÑ °ø½Ä ¹üÀ§ ¼³Á¤
 ? CSize Å©±â m_rect =.Size();
 ? {
 ???? CClientDC screenDC(NULL);
 ???? screenDC.SetMapMode(MM_HIMETRIC);
 ???? screenDC.DPtoLP(&size);
 ? }
 ? ½Ãµµ
 ? {
 ???? SetExtent(size);? / ´ë±â ÇÒ ¼ö ÀÖ½À´Ï´Ù
 ? }
 ? CATCH (CException, e)
 ? {
 ???? FALSE; ¹Ýȯ? / / ¸µÅ© Setbounds¸¦ Çã¿ë ÇÏÁö °ÍÀÔ´Ï´Ù
 ? }
 ? END_CATCH
 ? TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.
}

\oclient\frame.cpp(50): ¿À·ù C2039: 'InWaitForRelease': 'COleClientItem'ÀÇ ±¸¼º¿øÀÌ ¾Æ´Õ´Ï´Ù
\oclient\frame.cpp(50): ¿À·ù C2065: 'InWaitForRelease': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\oclient\frame.cpp(50): ¿À·ù C2064: ¿ë¾î´Â ÇÔ¼ö¿¡ °è»ê ÇÏÁö ¾Ê½À´Ï´Ù

º»ÁúÀûÀ¸·Î ´ëºÎºÐÀÇ °æ¿ì¿¡¼­ ºñµ¿±â À̾ú±â MFC/Àº ÄÁÅ×À̳ÊÀÇ µ¿±â½Ä API È£Ãâ ¼­¹ö¿¡ ½Ã¹Ä·¹À̼ÇÀ» Çß´Ù. ±×°ÍÀº »ç¿ëÀÚ ·ÎºÎÅÍ ¸í·ÉÀ» ó¸® Çϱâ Àü¿¡ ÁøÇà ÁßÀÎ ¶Ù¾î³­ ºñµ¿±â È£Ãâ¿¡ ´ë ÇÑ È®ÀÎ ÇÏ´Â µ¥ ÇÊ¿äÇÑ Çß´Ù. MFC/Àº ÀÌ·¸°Ô COleClientItem::InWaitForRelease ÇÔ¼ö¸¦ Á¦°ø ÇÕ´Ï´Ù. MFC/OLE 2ÀÌ ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù, ±×·¡¼­ Cmainframe¿¡ OnCommand ÀçÁ¤ÀÇ ¸ðµÎ ÇÔ²² Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù.

OCLIENT´Â ÄÄÆÄÀÏÇÏ°í ¸µÅ© ÇÏ´Â ½ÃÁ¡¿¡¼­¡£

±âŸ ÇÊ¿äÇÑ »çÇ×

±×·¯³ª ¸î °¡Áö°¡ ´Ù ÇÏÁö ¾Ê½À´Ï´Ù ½ÇÇà, OCLIENT °è¼Ó µË´Ï´Ù. ³ªÁß¿¡ ´ë½ÅÀÇ ÀÌÁ¦ ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°á ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

¸ðµÎÀÇ 1 ¹øÂ° ±×°ÍÀº OLE ¶óÀ̺귯¸®¸¦ ÃʱâÈ­ ÇÏ´Â µ¥ ÇÊ¿äÇÑÀÔ´Ï´Ù. InitInstance ¿¡¼­ AfxOleInit ¸¦ È£Ãâ ÇÏ ¿© ÀÌ·¸°Ô:

if (!.AfxOleInit())
{
  AfxMessageBox ("½ÇÆÐ¸¦ OLE ¶óÀ̺귯¸®¸¦ ÃʱâÈ­");
  FALSE; ¹Ýȯ
}

¶ÇÇÑ ¸Å°³ º¯¼ö ¸ñ·Ï º¯°æ ³»¿ë¿¡ ´ë ÇÑ °¡»ó ÇÔ¼ö¸¦ È®ÀÎ ÇÏ´Â ÁÁÀº ¾ÆÀ̵ð¾î ÀÌ´Ù. Çϳª °°Àº ±â´ÉÀº COleClientItem::OnChange, ¸ðµç MFC/OLE ÄÁÅ×ÀÌ³Ê ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ÀçÁ¤ÀÇ ÇÕ´Ï´Ù. ¿Â¶óÀÎ µµ¿ò¸»À» º¸°í, Ãß°¡ 'DWORD dwParam' Ãß°¡ µÇ¾ú½À´Ï´Ù º¸ÀÚ. »õ·Î¿î CRectItem::OnChange ´ÙÀ½°ú °°½À´Ï´Ù.

void CRectItem::OnChange (OLE_NOTIFICATION wNotification, DWORD dwParam)
{
  °æ¿ì (m_bTrackServerSize amp; ¹×
 ?????? !UpdateItemRectFromServer())
  {
 ?? / / ºó °³Ã¼
 ?? °æ¿ì (wNotification = OLE_CLOSED)
 ?? {
 ???? / / °³Ã¼-¿¡ ´ë ÇÑ ¼ö½Å µ¥ÀÌÅͰ¡ ±×°ÍÀ» ÆÄ±«
 ???? ÁÖÀå (!.IsVisible());
 ???? GetDocument()-> DeleteItem(this);
 ???? ¹Ýȯ;?? / / ¾Æ¹« ¾÷µ¥ÀÌÆ® (Ç׸ñÀº »ç¶óÁö°í Áö±ÝÀº)
 ?? }
  }
  °æ¿ì (wNotification! = OLE_CLOSED)
 ???? Dirty();
  Invalidate();? / / ¾î¶² º¯È­¸¦ ´Ù½Ã ±×¸®±â ¹ß»ý
}

MFC/Àº ÄÁÅ×ÀÌ³Ê ÀÀ¿ë ÇÁ·Î±×·¥ COleClientDoc¿¡¼­ ¹®¼­ Ŭ·¡½º¸¦ ÆÄ»ý ÇÕ´Ï´Ù. MFC/OLE 2¿¡¼­ÀÌ Å¬·¡½º Á¦°Å µÇ¾úÀ¸¸ç COleDocument (ÀÌ »õ·Î¿î Á¶Á÷À» ½±°Ô ÄÁÅ×À̳Ê/¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥)À¸·Î ´ëü ÇÕ´Ï´Ù. °Å±â¿¡´Â # define COleClientDoc COleDocument MFC/OLE 2 OCLIENT °°Àº MFC/Àº ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÀÌ½Ä ´Ü¼øÈ­ ÇÏ¿¡ ¸ÅÇÎÇÏ´Â. COleDocument COleClientDoc ¿¡ ÀÇÇØ Á¦°ø µÈ Á¦°ø ÇÏÁö ±â´É Áß Çϳª´Â Ç¥ÁØ ¸í·É ¸Þ½ÃÁö ¸Ê Ç׸ñÀÔ´Ï´Ù. ÀÌ ¶ÇÇÑ ÇÏÁö COleDocument (Á÷Á¢)¸¦ »ç¿ë ÇÏ´Â ¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥ ¼öÇà ÇÏÁö ¾Ê½À´Ï´Ù ±×µé°ú ÇÔ²² ÀÌ·¯ÇÑ ¸í·É 󸮱âÀÇ ¿À¹ö Çìµå°¡ ¹ß»ý ÇÏÁö ¾Ê´Â ÇÑ ±×µéÀº ÄÁÅ×À̳Ê/¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ·ç¾îÁý´Ï´Ù. CMainDoc ¸Þ½ÃÁö ¸Ê¿¡ ´ÙÀ½ Ç׸ñÀ» Ãß°¡ ÇØ¾ß ÇÏ´Â µî:

ON_UPDATE_COMMAND_UI (ID_EDIT_PASTE, OnUpdatePasteMenu)
ON_UPDATE_COMMAND_UI (ID_EDIT_PASTE_LINK, OnUpdatePasteLinkMenu)
ON_UPDATE_COMMAND_UI (ID_OLE_EDIT_LINKS, OnUpdateEditLinksMenu)
ON_COMMAND (ID_OLE_EDIT_LINKS, COleDocument::OnEditLinks)
ON_UPDATE_COMMAND_UI (ID_OLE_VERB_FIRST, OnUpdateObjectVerbMenu)
ON_UPDATE_COMMAND_UI (ID_OLE_EDIT_CONVERT, OnUpdateObjectVerbMenu)
ON_COMMAND (ID_OLE_EDIT_CONVERT, OnEditConvert)

ÀÌ·¯ÇÑ ¸í·ÉÀÇ ¸ðµç ±¸ÇöÀÔ´Ï´Ù ±ÍÇÏÀÇ ¹®¼­¿¡ ´ë ÇÑ ±âº» Ŭ·¡½º COleDocument, ÀΡ£

ÀÌ ½ÃÁ¡¿¡¼­, OCLIENT ±â´É OLE ÄÁÅ×ÀÌ³Ê ÀÀ¿ë ÇÁ·Î±×·¥ÀÔ´Ï´Ù. (OLE1 ¶Ç´Â OLE 2) ¾î¶² Á¾·ùÀÇ Ç׸ñÀ» »ðÀÔ ÇÏ´Â °ÍÀÌ ºÒ°¡´É ÇÕ´Ï´Ù. ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ »ç¿ë ÇÏ´Â µ¥ ÇÊ¿äÇÑ Äڵ带 ±¸Çö ÇÏ´Â ÀÌÈÄ Ç׸ñÀÌ ¸¹ÀÌ ole1¿Í °°Àº º°µµ â¿¡¼­ ÆíÁý µË´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­´Â Á¦ÀÚ¸®¿¡¼­ ÆíÁý ("ºñÁÖ¾ó ÆíÁý"ÀÌ ¶ó°íµµ ÇÔ) ¼ö ÀÖµµ·Ï ÇÊ¿äÇÑ »çÇ×À» ¼³¸í ÇÕ´Ï´Ù.

"ºñÁÖ¾ó ÆíÁý" Ãß°¡

OLEÀÇ °¡Àå Èï¹Ì·Î¿î ±â´É Áß Çϳª´Â Àå¼Ò¿¡ Ȱ¼ºÈ­ (¶Ç´Â "ºñÁÖ¾ó ÆíÁý")ÀÔ´Ï´Ù. ÀÌ ±â´ÉÀº ¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥À» ÀϺΠÄÁÅ×À̳ÊÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ »ç¿ëÀÚ¿¡ ´ë ÇÑ º¸´Ù ¿øÈ°ÇÑ ÆíÁý ÀÎÅÍÆäÀ̽º¸¦ Á¦°ø ÇÕ´Ï´Ù. OCLIENT ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ ±¸Çö ÇÏ·Á¸é ¸î °¡Áö Ưº° ÇÑ ¸®¼Ò½º »Ó¸¸ ¾Æ´Ï¶ó, ¸î °¡Áö Ãß°¡ ÄÚµå Ãß°¡ ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸®¼Ò½º¿Í ÄÚµå´Â ÀϹÝÀûÀ¸·Î AppWizard Á¦°øÇÑ-»ç½Ç, ¸¹Àº ¿©±â¿¡ ÄÚµåÀÇ "ÄÁÅ×À̳Ê" Áö¿ø ½Å¼±ÇÑ AppWizard ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Á÷Á¢ ºô¸° Çß´Ù¡£

ù°·Î ¸ðµÎÀÇ ±×°ÍÀº ³»ºÎ Ȱ¼º Ç׸ñ ¶§ »ç¿ëÇÒ ¸Þ´º ¸®¼Ò½º¸¦ Ãß°¡ ÇÏ´Â µ¥ ÇÊ¿äÇÑ. IDR_OCLITYPE ¸®¼Ò½º¸¦ º¹»ç ÇÏ °í ÆÄÀÏ ¹× â ÆË¾÷À» Á¦¿ÜÇÑ ¸ðµç Á¦°Å ÇÏ ¿© Visual c + +¿¡¼­ÀÌ Ãß°¡ ¸Þ´º ¸®¼Ò½º¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×·ì ºÐ¸®¸¦ ³ªÅ¸³»´Â ÆÄÀÏ ¹× â ÆË¾÷ »çÀÌ µÎ ±¸ºÐ¼± »ðÀÔ µË´Ï´Ù (ó·³ º¸ÀÌ°Ô ÇÑ´Ù: ÆÄÀÏ | â)ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ±¸ºÐÀº ¹«¾ùÀ» ÀÇ¹Ì ÇÏ °í ¼­¹ö ¹× ÄÁÅ×ÀÌ³Ê ¸Þ´º º´ÇÕ ¹æ¹ý¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "¸Þ´º ¹× ¸®¼Ò½º: ¸Þ´º º´ÇÕ" OLE 2 ¼ö¾÷¿¡¼­ À» ÂüÁ¶ ÇϽʽÿÀ.

ÀÌ ¸Þ´º¸¦ »ý¼º ÇÏ °í ³ª¸é ÇÁ·¹ÀÓ ¿öÅ© ±×µé¿¡ ´ëÇØ ¾Ë°í ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¹®¼­ ¼­½Ä ÆÄÀÏ¿¡ ´ë ÇÑ ±ÍÇÏÀÇ Initinstance¿¡¼­ ¹®¼­ ¼­½Ä ÆÄÀÏ ¸ñ·Ï¿¡ Ãß°¡ Çϱâ Àü¿¡ CDocTemplate::SetContainerInfo ¸¦ È£Ãâ ÇÏ ¿© ÀÌ·ç¾îÁý´Ï´Ù. ¹®¼­ ¼­½Ä ÆÄÀÏÀ» µî·Ï ÇÏ´Â »õ·Î¿î ÄÚµå ´ÙÀ½°ú °°ÀÌ

 CDocTemplate * pTemplate »õ·Î¿î CMultiDocTemplate (=
 nbsp;? IDR_OLECLITYPE,
 ?? RUNTIME_CLASS(CMainDoc),
 ?? RUNTIME_CLASS(CMDIChildWnd) / / Ç¥ÁØ MDI ÀÚ½Ä ÇÁ·¹ÀÓ
 ?? RUNTIME_CLASS(CMainView));
pTemplate-> SetContainerInfo(IDR_OLECLITYPE_INPLACE);
AddDocTemplate(pTemplate)

IDR_OLECLITYPE_INPLACE ¸®¼Ò½º´Â Visual c + +¿¡¼­ ¸¸µç Ưº° ÇÑ Àå¼Ò¿¡¼­ ¸®¼Ò½º¡£

ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ »ç¿ë Çϱâ À§Çؼ­´Â ¸î °¡Áö ¸ðµÎ CView ¿¡¼­ º¯°æ ÇØ¾ß ÇÏ´Â (CMainView) ÆÄ»ý Ŭ·¡½º¿Í COleClientItem ÆÄ»ý Ŭ·¡½º (CRectItem). Appwizard¿¡¼­ Á¦°ø ÇÏ´Â ¸ðµç ÀÌ·¯ÇÑ ÀçÁ¤ÀÇ ÇÏ °í ±¸Çö ´ëºÎºÐ ±âº» AppWizard ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Á÷Á¢ ¿Ã °Í ÀÌ´Ù¡£

ÀÌ Æ÷Æ®ÀÇ Ã¹ ¹øÂ° ´Ü°è¿¡¼­ ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­´Â ÀüÀûÀ¸·Î COleClientItem::CanActivate¸¦ ÀçÁ¤ÀÇ ÇÏ ¿© »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ÀçÁ¤ÀÇ À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ Çã¿ë Çϵµ·Ï Á¦°Å µÇ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ, º¸±â´Â À§Ä¡¿¡¼­ Ȱ¼ºÈ­ ÇÏ´Â µ¥ ÇÊ¿äÇѸ¸ Á¦°ø Çϱ⠶§¹®¿¡ NULL DoVerb (µÎ °¡Áö ±×µéÀÇ) ¸ðµç È£Ãâ¿¡ Àü´Þ µÇ¾ú½À´Ï´Ù. ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ ¿Ïº® ÇÏ °Ô ±¸Çö ÇÏ·Á¸é ¿Ã¹Ù¸¥ º¸±â DoVerb È£Ãâ¿¡ Àü´Þ ÇÏ´Â µ¥ ÇÊ¿äÇÑÀÔ´Ï´Ù. ÀÌ·¯ÇÑ È£Ãâ Áß Çϳª´Â CMainView::OnInsertObject ¿¡

pItem-gt; DoVerb(OLEIVERB_SHOW, this)(&G)

´Ù¸¥ CMainView::OnLButtonDblClk ¿¡

m_pSelection-gt; DoVerb(OLEIVERB_PRIMARY, this)(&G)

±×°ÍÀº COleClientItem::OnGetItemPosition¸¦ ÀçÁ¤ÀÇ ÇÏ´Â µ¥ ÇÊ¿äÇÑÀÔ´Ï´Ù. ÀÌ ¼­¹ö À§Ä¡ Ç׸ñÀÌ ³»ºÎ¿¡¼­ Ȱ¼ºÈ­ ÇÏ´Â °æ¿ì ÄÁÅ×À̳ÊÀÇ Ã¢À» ±âÁØÀ¸·Î À©µµ¿ì¸¦ ¾Ë·ÁÁÝ´Ï´Ù. OCLIENT¿¡ ´ë ÇÑ ±¸ÇöÀº »ç¼ÒÇÑ

void CRectItem::OnGetItemPosition (CRectamp; rPosition)
{
 ?? rPosition = m_rect;
}(&A)

¹«½¼ "¿¡¼­-Àå¼Ò Å©±â Á¶Á¤." ¶ó°í ´ëºÎºÐÀÇ ¼­¹ö ±¸Çö ÀÌ Å©±â¸¦ »ç¿ëÀÚ°¡ Ç׸ñÀ» ÆíÁý ÇÏ´Â µ¿¾È À̵¿ ¼­¹ö âÀÌ ÀÖ½À´Ï´Ù. ÄÁÅ×ÀÌ³Ê À̵¿ ¶Ç´Â ÀϹÝÀûÀ¸·Î â Å©±â Á¶Á¤ À§Ä¡¿Í ÄÁÅ×ÀÌ³Ê ¹®¼­ ÀÚü ³»¿¡¼­ Å©±â¸¦ ¿µÇâÀ» ÁֹǷÎÀÌ ÀÛ¾÷¿¡ Âü¿© ÇØ¾ß ÇÕ´Ï´Ù. OCLIENTÀÇ ±¸ÇöÀ» µ¿±âÈ­ »õ À§Ä¡¿Í Å©±â´Â m_rect¿¡ ÀÇÇØ À¯Áö ÇÏ´Â ³»ºÎ Á÷»ç°¢Çü¡£

 BOOL CRectItem::OnChangeItemPosition(const CRectamp; rectPos)
{
 ?? ASSERT_VALID(this);

if (!.COleClientItem::OnChangeItemPosition(rectPos))
 ?????? FALSE; ¹Ýȯ

Invalidate();
 ?? m_rect = rectPos;
 ?? Invalidate();
 ?? GetDocument()-> SetModifiedFlag();

TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.
}

ÀÌ ½ÃÁ¡¿¡¼­, Á¦ÀÚ¸®¿¡¼­ Ȱ¼ºÈ­ µÉ ¶§ Ȱ¼º Ç׸ñ À̵¿ ¹× Å©±â Á¶Á¤ ó¸® ÇÑ Ç׸ñ ¼ö ÀÖµµ·Ï ÃæºÐ ÇÑ ÄÚµå ÇÏÁö¸¸ ÆíÁý ¼¼¼ÇÀ» Á¾·áÇÒ ¼ö ÀÖµµ·Ï Äڵ尡 ¹ß»ý ÇÏÁö ¾Ê½À´Ï´Ù. ÀϺΠ¼­¹öÀÌ ±â´ÉÀ» Á¦°øÀÌ ½º½º·Î esc ۸¦ ó¸® ÇÏ ¿©, ºñ·Ï ÄÁÅ×ÀÌ³Ê Ç׸ñÀ» ºñȰ¼ºÈ­ ÇÏ·Á¸é µÎ °¡Áö ¹æ¹ýÀ¸·Î Á¦°ø ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù: Ç׸ñ, ¹ÛÀ¸·Î Ŭ¸¯ ÇÏ ¿© (1) ¹× (2) esc ۸¦ ħ À¸·Î½á¡£

Å»Ãâ¿¡ ´ë ÇÑ Å° Ãß°¡ VK_ESCAPE ۸¦ ¸í·É¿¡ ¸ÅÇÎÇÏ´Â Visual c + + °¡¼Ó±â ID_CANCEL_EDIT¿¡ Ãß°¡ µË´Ï´Ù ÀÚ¿ø. ÀÌ ¸í·É¿¡ ´ë ÇÑ Ã³¸®±â´Â ´ÙÀ½°ú °°½À´Ï´Ù.:

/ / ´ÙÀ½ ¸í·É 󸮱â´Â Ç¥ÁØ Á¦°ø
/ / Űº¸µå Á¦ÀÚ¸®¿¡¼­ Ãë¼Ò ÇÏ·Á¸é »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º
/ / session.void CMainView::OnCancelEdit() ÆíÁý
{
 nbsp;? / /ÀÌ º¸±â¿¡ ³»ºÎ Ȱ¼º Ç׸ñÀ» ´Ý½À´Ï´Ù.
 ?? COleClientItem * pActiveItem = GetDocument()-> GetInPlaceActiveItem(this);
 ?? °æ¿ì (pActiveItem! = NULL)
 ?????? pActiveItem-> close ();
 ?? ASSERT(GetDocument()-> GetInPlaceActiveItem(this) = = NULL);
}

¾îµð »ç¿ëÀÚ Ç׸ñ ¹Ù±ùÂÊÀ» Ŭ¸¯ÇÒ °æ¿ì¸¦ ó¸® ÇÏ·Á¸é ´ÙÀ½ Äڵ忡 Ãß°¡ÇÑ CMainView::SetSelection ÀÇ ½ÃÀÛ

°æ¿ì (pNewSel! = m_pSelection | pNewSel = = NULL)
{
 nbsp;? COleClientItem * pActiveItem = GetDocument()-> GetInPlaceActiveItem(this);
 ?? °æ¿ì (pActiveItem! = NULL & & pActiveItem! = pNewSel)
 ?????? pActiveItem-> close ();
}
 ?& nbsp
 

Ç׸ñ Àå¼Ò¿¡¼­ Ȱ¼º ¶§ Æ÷Ä¿½º°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ °æ¿ì È®ÀÎ ÇÏ´Â Æ÷Ä¿½º´Â Ç×»ó Ȱ¼º Ç׸ñ¿¡ ¿Å°ÜÁø º¸±â Æ÷Ä¿½º¸¦ ¹ÞÀ» ¶§ OnSetFocus ó¸®:

/ / OnSetFocus ¹× Onsize¿¡ ´ë ÇÑ Æ¯¼ö ó¸® ÇÊ¿ä / ¶§ °³Ã¼°¡ Á¦ÀÚ¸®¿¡¼­ ÆíÁý ÇÏ °í /.
void CMainView::OnSetFocus (CWnd * pOldWnd)
{
 nbsp;? COleClientItem * pActiveItem = GetDocument()-> GetInPlaceActiveItem(this);
 ?? °æ¿ì (pActiveItem! = NULL & &
 ?? pActiveItem-> GetItemState() = COleClientItem::activeUIState)
 ?? {
 ?????? / / ÇÊ¿äÇÑ °æ¿ì µ¿ÀÏÇÑ º¸±â°¡ÀÌ Ç׸ñ¿¡ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÏ·Á¸é
 ?????? CWnd * pWnd = pActiveItem-> GetInPlaceWindow();
 ?????? °æ¿ì (pWnd! = NULL)
 ?????? {
 ?????????? pWnd-> SetFocus();? / / ±âº» Ŭ·¡½º¸¦ È£Ãâ ÇÏÁö ¸¶½Ê½Ã¿À
 ?????????? ¹Ýȯ;
 ?????? }
 ?? }

CView::OnSetFocus(pOldWnd);
}

º¸±â Å©±â¸¦ Á¶Á¤ÇÒ ¶§ Ŭ¸®ÇÎ »ç°¢Çü º¯°æ µÈ Ȱ¼º Ç׸ñÀ» Å뺸 ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô OnSize ¿¡ ´ë ÇÑ Ã³¸®±â¸¦ Á¦°ø ÇÏ·Á¸é:

void CMainView::OnSize (UINT nType, int cx int cy)
{
 nbsp;? CView::OnSize (nType, cx, cy);
 ?? COleClientItem * pActiveItem = GetDocument()-> GetInPlaceActiveItem(this);
 ?? °æ¿ì (pActiveItem! = NULL)
 ?????? pActiveItem-> SetItemRects();
}

»ç·Ê ¿¬±¸: HIERSVR MFC 2.0¿¡¼­

HIERSVR µµ MFC 2.0¿¡ Æ÷ÇÔ µÈ ¹× MFC/OLE1 ÇÔ²² OLE ±¸Çö. ÀÌ ³ëÆ®´ÂÀÌ ÀÀ¿ë ÇÁ·Î±×·¥Àº óÀ½ º¯È¯ MFC/OLE 2 Ŭ·¡½º¸¦ »ç¿ë ÇÏ´Â ´Ü°è¸¦ °£·«ÇÏ°Ô ¼³¸í ÇÕ´Ï´Ù. ÃÊ±â Æ÷Æ® MFC/OLE 2 Ŭ·¡½º¸¦ ¼³¸í Çϱâ À§ÇØ ´õ ³ªÀº ¿Ï·á µÈ ÈÄ¿¡ ´Ù¾ç ÇÑ ±â´ÉÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº ¿©±â; Àû¿ë µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °í±Þ ±â´É¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¿¹Á¦¸¦ ÂüÁ¶ ÇϽʽÿÀ¡£

¸Þ¸ðnbsp;??ÄÄÆÄÀÏ·¯ ¿À·ù ¹× ´Ü°èº° °úÁ¤Àº Visual c + + 2.0À¸·Î ¸¸µé¾îÁ³½À´Ï´Ù. Visual c + + 4.0, ƯÁ¤ ¿À·ù ¸Þ½ÃÁö¿Í À§Ä¡ º¯°æ µÇ¾úÀ» ¼ö ÀÖ½À´Ï´Ù ÇÏÁö¸¸ °³³ä Á¤º¸ À¯È¿ ÇÏ °Ô À¯Áö(&N)¡£

Áö °í ½ÇÇà

HIERSVR »ùÇÃÀ» MFC/OLE Æ÷Æ® ÃÔ¿µ ¹æ¹ýÀº °Ç¹°°ú µÉ »·ÇÑ ÄÄÆÄÀÏ·¯ ¿À·ù¸¦ ¼öÁ¤ ÇÏ ¿© ½ÃÀÛ ÇÕ´Ï´Ù. MFC 2.0¿¡¼­ HIERSVR »ùÇÃÀ»°¡Áö°íÀÌ ¹öÀüÀÇ MFC¿¡¼­ ÄÄÆÄÀÏ ÇÏ´Â °æ¿ì´Â ¾ø½À´Ï´Ù (ºñ·Ï OCLIENT »ùÇÃÀ» º¸´Ù ´õ ÀÖ´Ù)¸¦ ÇØ°á Çϱâ À§ÇØ ¸¹Àº ¿À·ù¸¦ ãÀ» °Å ¾ß. ¾Æ·¡´Â ÀϹÝÀûÀ¸·Î ¹ß»ý ÇÏ´Â ¼ø¼­¿¡ ÀÖ´Â ¿À·ù¸¦ ¼³¸í Çϴ¡£

ÄÄÆÄÀÏ ¹× ¿À·ù ¼öÁ¤

\hiersvr\hiersvr.cpp(83): ¿À·ù C2039: 'RunEmbedded': 'COleTemplateServer'ÀÇ ±¸¼º¿øÀÌ ¾Æ´Õ´Ï´Ù

ÀÌ Ã¹ ¹øÂ° ¿À·ù´Â ¼­¹ö¿¡ ´ë ÇÑ ÈξÀ ´õ Å« ¹®Á¦°¡ InitInstance ÇÔ¼ö¸¦ ÁöÀû ÇÑ´Ù. OLE ¼­¹ö¿¡ ÇÊ¿äÇÑ ÃʱâÈ­ ¾Æ¸¶ MFC/Àº ÀÀ¿ë ÇÁ·Î±×·¥ ½ÇÇàÀ» ÇÏ °Ô ÇÒ °Í ÀÌ´Ù °¡Àå Å« º¯È­ Áß ÇϳªÀÔ´Ï´Ù. ÇÒ °¡Àå ÁÁÀº °ÍÀº AppWizard OLE ¼­¹ö¿¡ ´ë ÇÑ ¸¸µì´Ï´Ù È®ÀÎ ÇÏ °í ÀûÀý ÇÑ Äڵ带 ¼öÁ¤ ÇÕ´Ï´Ù. ¸í½É¿¡¼­ ÇØ¾ß ÇÒ ¸î °¡Áö Æ÷ÀÎÆ®¸¦ ¿îÇ×:

±×°ÍÀº AfxOleInit ¸¦ È£Ãâ ÇÏ ¿© OLE ¶óÀ̺귯¸®¸¦ ÃʱâÈ­ ÇÏ´Â µ¥ ÇÊ¿äÇÑ

¼­¹ö ¸®¼Ò½º ÇÚµé ¹× CDocTemplate »ý¼ºÀÚ·Î ¼³Á¤ÇÒ ¼ö ¾ø´Â ·±Å¸ÀÓ Å¬·¡½º Á¤º¸¸¦ ¼³Á¤ ÇÏ·Á¸é ¹®¼­ ¼­½Ä ÆÄÀÏ °³Ã¼¿¡ ´ëÇØ Setserverinfo¸¦ È£Ãâ¡£

¸í·ÉÁÙ¿¡ /Embedding ÀÖÀ¸¸é ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ Ç¥½Ã ¾È ÇÔ¡£

±ÍÇÏÀÇ ¹®¼­¿¡ ´ë ÇÑ GUID ÇÊ¿ä ÇÕ´Ï´Ù. ±ÍÇÏÀÇ ¹®¼­ À¯Çü (128 ºñÆ®)¿¡ ´ë ÇÑ °íÀ¯ ½Äº°ÀÚÀÔ´Ï´Ù. AppWizard ´ç½ÅÀ» À§ÇØ Çϳª¸¦ ¸¸µé °ÍÀÔ´Ï´Ù-±×·¡¼­ ¸¸¾à ´ç½ÅÀÌ ¿©±â ¼³¸í ÇÏ´Â ±â¼úÀ» »ç¿ë ÇÏ ¿© »õ ¸¶¹ý»ç »ý¼º ¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ »õ Äڵ带 º¹»ç, ´ç½ÅÀº ´Ü¼øÈ÷ "ÈÉÄ¥ ¼ö" ÇØ´ç ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ GUID. ±×·¸Áö ¾ÊÀ¸¸é ÇØ´ç GUIDGENÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.BIN µð·ºÅ͸®¿¡ EXE À¯Æ¿¸®Æ¼¡£

±×°ÍÀº "" COleTemplateServer °³Ã¼¿¡ ¿¬°áÇÒ ¹®¼­ ¼­½Ä ÆÄÀÏ COleTemplateServer::ConnectTemplate ¸¦ È£Ãâ ÇÏ ¿© ÇÊ¿äÇÑ¡£

ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ µ¶¸³ ½ÇÇàÇü ½ÇÇà ¶§ ½Ã½ºÅÛ ·¹Áö½ºÆ®¸®¸¦ ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ À̵¿ ÇÏ´Â °æ¿ìÀÌ ¹æ¹ýÀÌ ÇÕ´Ï´Ù.EXE ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ »õ À§Ä¡¸¦ °¡¸®Å°µµ·Ï Windows ½Ã½ºÅÛ µî·Ï µ¥ÀÌÅͺ£À̽º¸¦ ¾÷µ¥ÀÌ Æ® µË´Ï´Ù »õ·Î¿î À§Ä¡¿¡¼­ ½ÇÇà¡£

AppWizard InitInstance¿¡ ´ë ÇÑ »ý¼º¿¡ µû¶ó ÀÌ·¯ÇÑ º¯°æ ³»¿ëÀ» ¸ðµÎ Àû¿ë ÇÑ ÈÄ HIERSVR À§ÇØ InitInstance (¹× °ü·ÃµÈ GUID) Àоî¾ß ÇÑ´Ù ´ÙÀ½°ú °°½À´Ï´Ù.:

// this is the GUID for HIERSVR documents
static const GUID BASED_CODE clsid =
    { 0xA0A16360L, 0xC19B, 0x101A, { 0x8C, 0xE5, 0x00, 0xDD, 0x01, 0x11, 0x3F, 0x12 } };
    
/////////////////////////////////////////////////////////////////////////////
// COLEServerApp initialization

BOOL COLEServerApp::InitInstance()
{
    // OLE 2 initialization
    if (!AfxOleInit())
    {
        AfxMessageBox("Initialization of the OLE failed!");
        return FALSE;
    }

    // Standard initialization
    LoadStdProfileSettings(); // Load standard INI file options 

    // Register document templates
    CDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(IDR_HIERSVRTYPE,
        RUNTIME_CLASS(CServerDoc),   
        RUNTIME_CLASS(CMDIChildWnd),
        RUNTIME_CLASS(CServerView));
    pDocTemplate->SetServerInfo(IDR_HIERSVRTYPE_SRVR_EMB);
    AddDocTemplate(pDocTemplate);

    // create main MDI Frame window
    CMainFrame* pMainFrame = new CMainFrame;
    if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
        return FALSE;
    m_pMainWnd = pMainFrame;

    SetDialogBkColor();   // gray look

    // enable file manager drag/drop and DDE Execute open
    m_pMainWnd->DragAcceptFiles();
    EnableShellOpen();
    
    m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
    COleTemplateServer::RegisterAll();

    // try to launch as an OLE server
    if (RunEmbedded())
    {
        // "short-circuit" initialization -- run as server!
        return TRUE;
    }
    m_server.UpdateRegistry();
    RegisterShellFileTypes();

    // not run as OLE server, so show the main window
    if (m_lpCmdLine[0] == '\0')
    {
        // create a new (empty) document
        OnFileNew();
    }
    else
    {
        // open an existing document
        OpenDocumentFile(m_lpCmdLine);
    }

    pMainFrame->ShowWindow(m_nCmdShow);
    pMainFrame->UpdateWindow();
    
    return TRUE;
}

À§ÀÇ ÄÚµå IDR_HIERSVRTYPE_SRVR_EMB »õ ¸®¼Ò½º ID¸¦ °¡¸®Åµ´Ï´ÙÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ¶Ç ´Ù¸¥ ÄÁÅ×À̳ʿ¡ Æ÷ÇÔ µÈ ¹®¼­¸¦ ÆíÁýÇÒ ¶§ »ç¿ë µÇ´Â ¸Þ´º ¸®¼Ò½ºÀÔ´Ï´Ù. MFC/OLE1 ¸Þ´º Ç׸ñÀÌ Æ÷ÇÔ µÈ Ç׸ñÀ» ÆíÁý ÇÏ·Á¸é ƯÁ¤ Áï¼®¿¡¼­ ¼öÁ¤ µÇ¾ú½À´Ï´Ù. ÆÄÀÏ ±â¹Ý ¹®¼­¸¦ ÆíÁý ÇÏ´Â ´ë½Å Æ÷ÇÔ µÈ Ç׸ñÀ» ÆíÁýÇÒ ¶§ ¿ÏÀüÈ÷ ´Ù¸¥ ¸Þ´º ±¸Á¶¸¦ »ç¿ë ÇÏ ¿© ÈξÀ ½±°Ô ÀÌ·¯ÇÑ µÎ °¡Áö º°µµ ¸ðµå¿¡ ´ë ÇÑ ´Ù¸¥ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ Á¦°ø ÇÕ´Ï´Ù. ¿ÏÀüÈ÷ º°µµ ¸Þ´º ¸®¼Ò½º´Â Æ÷ÇÔ µÈ °³Ã¼¿¡¼­ Àå¼Ò¸¦ ÆíÁýÇÒ ¶§ »ç¿ë µË´Ï´Ù ³ªÁß¿¡ »ìÆìº¸°ÚÁö¸¸¡£

ÀÌ ¸®¼Ò½º¸¦ ¸¸µé·Á¸é Visual c + + ¸®¼Ò½º ½ºÅ©¸³Æ®¸¦ ·Îµå ÇÏ °í ±âÁ¸ IDR_HIERSVRTYPE ¸Þ´º ¸®¼Ò½º¸¦ º¹»ç ÇÕ´Ï´Ù. »õ ¸®¼Ò½º¸¦ IDR_HIERSVRTYPE_SRVR_EMB (À̰ÍÀÌ Appwizard¸¦ »ç¿ë ÇÏ ¿© µ¿ÀÏÇÑ ¸í¸í ±ÔÄ¢) À̸§À» ¹Ù²ß´Ï´Ù. ´ÙÀ½ "ÆÄÀÏ ¾÷µ¥ÀÌÆ®"; "ÆÄÀÏ ÀúÀå"À» º¯°æ ¸í·É ID ID_FILE_UPDATEÁ¦°ø ÇÕ´Ï´Ù. ¶ÇÇÑ º¯°æ "ÆÄÀÏ ÀúÀå" ÆÄÀÏ º¹»ç "À¸·Î" ÀúÀå; ¸í·É ID ID_FILE_SAVE_COPY_ASÁ¦°ø ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸í·ÉÀº ¸ðµÎÀÇ ±¸ÇöÀ» Á¦°ø ÇÏ´Â ÇÁ·¹ÀÓ ¿öÅ©¡£

\hiersvr\svritem.h(60): ¿À·ù C2433: 'OLESTATUS': ', ' °¡»ó¿¡¼­ Çã¿ë µÇÁö ¾Ê½À´Ï´Ù µ¥ÀÌÅÍ ¼±¾ð
\hiersvr\svritem.h(60): ¿À·ù C2501: 'OLESTATUS': decl ÁöÁ¤ÀÚ¸¦ ´©¶ô
\hiersvr\svritem.h(60): ¿À·ù C2146: ±¸¹® ¿À·ù: ´©¶ô µÈ 'OnSetData' ½Äº°ÀÚ ¾Õ¿¡ ';'
\hiersvr\svritem.h(60): ¿À·ù C2061: ±¸¹® ¿À·ù: ½Äº°ÀÚ 'OLECLIPFORMAT'
\hiersvr\svritem.h(60): ¿À·ù C2501: 'OnSetData': decl ÁöÁ¤ÀÚ¸¦ ´©¶ô

OnSetData, ÀçÁ¤ÀÇ¿¡¼­ ¹ß»ý ÇÏ´Â ¶§¹®¿¡ OLESTATUS Çü½ÄÀ¸·Î ÂüÁ¶ ÇÏ´Â ¿À·ù ¼ö°¡ ÀÖ½À´Ï´Ù. OLESTATUS Àº ¿À·ù¸¦ ¹Ýȯ ÇÏ´Â ¹æ¹ý À̾ú´Ù. ÀÌ MFC ÀϹÝÀûÀ¸·Î º¯È¯ µÈ HRESULT ¿À·ù°¡ ÀÖ´Â COleException ºñ·Ï HRESULT OLE 2¿¡¼­ º¯°æ µÇ¾ú½À´Ï´Ù. ÀÌ Æ¯Á¤ °æ¿ì¿¡ OnSetData ÀÇ ÀçÁ¤ÀÇ À̹ǷΠ´õ ÀÌ»ó ÇÊ¿ä ÇÒ °¡Àå ½¬¿î °ÍÀº ±×°ÍÀ» Á¦°Å ÇÏ¡£

 \hiersvr\svritem.cpp(30): ¿À·ù C2660: 'COleServerItem::COleServerItem': ÇÔ¼ö 1 ¸Å°³ º¯¼ö¸¦ ¹ÞÁö ¾Ê½À´Ï´Ù

COleServerItem »ý¼ºÀÚ Ãß°¡ 'BOOL' ¸Å°³ º¯¼ö¸¦ »ç¿ë ÇÕ´Ï´Ù. ÀÌ Ç÷¡±×´Â COleServerItem °³Ã¼¿¡ ´ëÇØ ¸Þ¸ð¸® °ü¸®¸¦ ¼öÇà ÇÏ´Â ¹æ¹ýÀ» °áÁ¤ ÇÕ´Ï´Ù. ÇÁ·¹ÀÓ ¿öÅ© ÀÌ·¯ÇÑ °³Ã¼ÀÇ ¸Þ¸ð¸® °ü¸®¸¦ ó¸® ÇÏ´Â true·Î ¼³Á¤ ÇÏ ¿©-±×µéÀº ´õ ÀÌ»ó ÇÊ¿äÇÑ °æ¿ì »èÁ¦ ÇÕ´Ï´Ù. HIERSVR CServerItem ( COleServerItem¿¡¼­ ÆÄ»ý) °³Ã¼ »ç¿ë ÇÏ ¿© ³×ÀÌÆ¼ºê µ¥ÀÌÅÍÀÇ ÀÏȯÀ¸·ÎÀÌ Ç÷¡±×¸¦ false·Î ¼³Á¤ °Å ¾ß. ±×·¯¸é °¢ ¼­¹ö Ç׸ñÀº »èÁ¦ µÇ´Â ½Ã±â¸¦ °áÁ¤ ÇÏ´Â HIERSVR¡£

\hiersvr\svritem.cpp(44): ¿À·ù C2259: 'CServerItem': Ãß»ó Ŭ·¡½º¸¦ ÀνºÅϽºÈ­ÇÏ´Â ºÒ¹ý ½Ãµµ
\hiersvr\svritem.cpp(44): ¿À·ù C2259: 'CServerItem': Ãß»ó Ŭ·¡½º¸¦ ÀνºÅϽºÈ­ÇÏ´Â ºÒ¹ý ½Ãµµ

ÀÌ·¯ÇÑ ¿À·ù¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ ÀϺΠ' ¼ø¼ö °¡»ó ' ÇÔ¼ö´Â Cserveritem¿¡¼­ ÀçÁ¤ÀÇ µÇÁö ¾Ê½À´Ï´Ù. °¡Àå °¡´É¼ºÀÌÀÌ OndrawÀÇ ¸Å°³ º¯¼ö ¸ñ·Ï¿¡¼­ º¯°æ µÈ »ç½Ç¿¡ ÀÇÇØ ¹ß»ý ÇÕ´Ï´Ù. ÀÌ ¿À·ù¸¦ ÇØ°á ÇÏ·Á¸é CServerItem::OnDraw °°ÀÌ º¯°æ (»Ó¸¸ ¾Æ´Ï¶ó svritem.h¿¡ ¼±¾ð)

BOOL CServerItem::OnDraw(CDC* pDC, CSizeamp; rSize)
{
 ?? / / ³ëµå¸¦ ±×¸®´Â OLE¿¡¼­ ¿äû
 ?? pDC-> SetMapMode(MM_TEXT); / / Ç×»ó Çȼ¿
 ?? ¹Ýȯ DoDraw (pDC, CPoint(0,0), FALSE);
}

»õ ¸Å°³ º¯¼ö´Â 'rSize'. ÀÌ Æí¸® ÇÏ °Ô ÇÏ´Â °æ¿ì µå·ÎÀ×ÀÇ Å©±â¿¡ ä¿ï ¼ö ÀÖ½À´Ï´Ù. ÀÌ Å©±â´Â HIMETRIC¿©¾ß ÇÕ´Ï´Ù. ÀÌ °æ¿ì ±×°ÍÀº ¾Æ´Ï¹Ç·ÎÀÌ °ªÀ» ä¿ì±â À§ÇØ Æí¸® ÇÏ °Ô ¹üÀ§¸¦ °Ë»ö ÇÏ·Á¸é OnGetExtent ¸¦ È£Ãâ ÇÏ´Â ÇÁ·¹ÀÓ ¿öÅ©. ±× ÀÛµ¿, OnGetExtent ±¸Çö ÇØ¾ß:

BOOL CServerItem::OnGetExtent(DVASPECT dwDrawAspect, CSizeamp; rSize)
{
 ?? °æ¿ì (dwDrawAspect! = DVASPECT_CONTENT)
 ?????? COleServerItem::OnGetExtent (dwDrawAspect, rSize); ¹Ýȯ
 ?????? 
 ?? rSize = CalcNodeSize();
 ?? TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.
}

\hiersvr\svritem.cpp(104): ¿À·ù C2065: 'm_rectBounds': ¼±¾ð µÇÁö ¾ÊÀº ½Äº°ÀÚ
\hiersvr\svritem.cpp(104): ¿À·ù C2228: ¿ÞÂÊÀÇ '.SetRect' Ŭ·¡½º/±¸Á¶Ã¼/union Çü½ÄÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
\hiersvr\svritem.cpp(106): ¿À·ù C2664: ' void __pascal __far DPtoLP (±¸Á¶Ã¼: __far tagPOINT *, int) __far const ': ¸Å°³ º¯¼ö 1¿¡¼­ º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù ' __far int *'À» ' ±¸Á¶Ã¼: tagPOINT __far *'(&A)

Cserveritem::calcnodesize¿¡¼­ ÇÔ¼ö Ç׸ñ Å©±â HIMETRIC º¯È¯ ÇÏ °í m_rectBounds¿¡ ÀúÀå µË´Ï´Ù. ºÒ¹ý ü·ùÀÚ 'm_rectBounds' ¼Ò¼Ó COleServerItem Á¸Àç ÇÏÁö ¾Ê½À´Ï´Ù ( m_sizeExtent¿¡ ÀÇÇØ ºÎºÐÀûÀ¸·Î ´ëü µÇ¾ú½À´Ï´Ù ÇÏÁö¸¸ OLE 2¿¡¼­ÀÌ ¸â¹ö m_rectBounds ole1¿¡¼­ Çß´ø °Í º¸´Ù ¾à°£ ´Ù¸¥ »ç¿ëÀ» ÇϰíÀÖ´Ù). ÀÌ ¸â¹ö º¯¼ö¸¦ HIMETRIC Å©±â¸¦ ¼³Á¤ ÇÏ´Â ´ë½ÅÀÌ ¹Ýȯ ÇÕ´Ï´Ù. ÀÌ ¹Ýȯ °ªÀº OnGetExtent, ÀÌÀü ±¸Çö¿¡ »ç¿ë¡£

CSize CServerItem::CalcNodeSize()
{
 nbsp;? CClientDC dcScreen(NULL);

m_sizeNode (m_strDescription, dcScreen.GetTextExtent =
 ???? m_strDescription.GetLength());
 ?? m_sizeNode + = CSize (CX_INSET * 2, CY_INSET * 2);

/ / Á¦¾ÈµÈ HIMETRIC Å©±â ¼³Á¤
 ?? CSize Å©±â (m_sizeNode.cx, m_sizeNode.cy);
 ?? dcScreen.SetMapMode(MM_HIMETRIC);
 ?? dcScreen.DPtoLP(&size);
 ?? ¹Ýȯ Å©±â;
}

Cserveritem´Â ¶ÇÇÑ COleServerItem::OnGetTextData¸¦ ÀçÁ¤ÀÇÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â MFC/OLE¿¡¼­ »ç¿ë µÇÁö ¾Ê½À´Ï´Ù ¹× ´Ù¸¥ ¸ÞÄ¿´ÏÁòÀ¸·Î ´ëü µË´Ï´Ù. MFC OLE »ùÇÃÀÇ MFC 3.0 ¹öÀü HIERSVR COleServerItem::OnRenderFileData¸¦ ÀçÁ¤ÀÇ ÇÏ ¿©ÀÌ ±â´ÉÀ» ±¸Çö ÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº OnGetTextData ÀçÁ¤ÀÇ Á¦°ÅÇÒ ¼ö ÀÖµµ·ÏÀÌ ±âº» Æ÷Æ®¿¡ ´ë ÇÑ Áß¿ä ÇÏÁö ¾Ê½À´Ï´Ù.

ÇØ°á µÇÁö ¾ÊÀº svritem.cpp¿¡¼­ ´õ ¸¹Àº ¿À·ù°¡ ÀÖ½À´Ï´Ù. ±×µéÀº "ÁøÂ¥" ¿À·ù ? ÀÌÀü ¿À·ù¿¡ ÀÇÇØ ¹ß»ý ÇÏ´Â ±×³É ¿À·ù¡£

\hiersvr\svrview.cpp(325): ¿À·ù C2660: 'CopyToClipboard': ÇÔ¼ö 2 ¸Å°³ º¯¼ö¸¦ ¹ÞÁö ¾Ê½À´Ï´Ù

COleServerItem::CopyToClipboard ´Â ´õ ÀÌ»ó 'bIncludeNative' Ç÷¡±×¸¦ Áö¿øÇÕ´Ï´Ù. ³×ÀÌÆ¼ºê µ¥ÀÌÅÍ (¼­¹ö Ç׸ñÀÇ Serialize ÇÔ¼ö¿¡ ÀÇÇØ ¾²¿©Áø µ¥ÀÌÅÍ)´Â ù ¹øÂ° ¸Å°³ º¯¼ö¸¦ Á¦°Å ÇÏ´Â ±×·¡¼­ Ç×»ó º¹»ç µË´Ï´Ù. ¶ÇÇÑ, CopyToClipboard ´Â FALSE¸¦ ¹Ýȯ ÇÏ´Â ´ë½Å ¿À·ù°¡ ¹ß»ý ÇÏ´Â °æ¿ì ¿¹¿Ü°¡ throw µË´Ï´Ù. Cserverview::oneditcopy¿¡ ´ë ÇÑ Äڵ带 ´ÙÀ½°ú °°ÀÌ º¯°æ

void CServerView::OnEditCopy()
{
 nbsp;? °æ¿ì (m_pSelectedNode = = NULL)
 ?????? AfxThrowNotSupportedException();
 ?????? 
 ?? ½Ãµµ
 ?? {
 ?????? m_pSelectedNode-> CopyToClipboard(TRUE);
 ?? }
 ?? CATCH_ALL(e)
 ?? {
 ?????? AfxMessageBox ("Ŭ¸³º¸µå¿¡ º¹»ç ÇÏÁö ¸øÇß½À´Ï´Ù.");
 ?? }
 ?? END_CATCH_ALL}

HIERSVRÀÇ MFC 2.0 ¹öÀüÀÇ ÆíÁý¿¡¼­ ¹ß»ý ÇÏ´Â OCLIENTÀÇ µ¿ÀÏÇÑ ¹öÀüÀ» °Å±â º¸´Ù ´õ ¸¹Àº ¿À·ù Çß´Ù, ºñ·Ï °Å±â ½ÇÁ¦·Î ÀûÀº º¯°æ¡£

ÀÌ ½ÃÁ¡¿¡¼­ HIERSVR ÄÄÆÄÀÏ ¹× ¸µÅ© µÇ¸ç ´ÙÀ½ ±¸ÇöÇÒ Á¦ÀÚ¸®¿¡¼­ ÆíÁý ±â´ÉÀ» ÇÏÁö ¾Ê°í OLE ¼­¹ö·Î ÀÛµ¿¡£

"ºñÁÖ¾ó ÆíÁý" Ãß°¡

"ºñÁÖ¾ó ÆíÁý" (¶Ç´Â ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­)ÀÌ ¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥À» Ãß°¡ ÇÏ·Á¸é °Å±â¿¡ ¸î °¡Áö ´ç½ÅÀÌ ¾Ë¾Æ¼­ ÇØ¾ß ÇÕ´Ï´Ù.:

¸Þ´º ¸®¼Ò½º ¸¸µé±â ½±½À´Ï´Ù. Visual c + + ½ÇÇà, ¸Þ´º ¸®¼Ò½º IDR_HIERSVRTYPE IDR_HIERSVRTYPE_SRVR_IP ¶ó´Â ¸Þ´º ¸®¼Ò½º¸¦ º¹»ç ÇÕ´Ï´Ù. ÆíÁý ¹× µµ¿ò¸» ¸Þ´º ÆË¾÷¸¸ ¿ÞÂÊ ¸Þ´º¸¦ ¼öÁ¤ ÇÕ´Ï´Ù. ÆíÁý ¹× µµ¿ò¸» ¸Þ´º »çÀÌ ¸Þ´º¿¡ µÎ °³ÀÇ ±¸ºÐ ±âÈ£¸¦ Ãß°¡ (ó·³ º¸ÀÌ°Ô ÇÑ´Ù: ÆíÁý | | µµ¿ò¸»)ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ±¸ºÐÀº ¹«¾ùÀ» ÀÇ¹Ì ÇÏ °í ¼­¹ö ¹× ÄÁÅ×ÀÌ³Ê ¸Þ´º º´ÇÕ ¹æ¹ý¿¡ ÀÚ¼¼ÇÑ ³»¿ëÀº "¸Þ´º ¹× ¸®¼Ò½º: ¸Þ´º º´ÇÕ" OLE 2 ¼ö¾÷¿¡¼­ À» ÂüÁ¶ ÇϽʽÿÀ.

ÇÏÀ§ ÁýÇÕ µµ±¸ ¸ðÀ½¿¡ ´ë ÇÑ ºñÆ®¸Ê "¼­¹ö" ¿É¼ÇÀ» üũ ÇÑ ½Å¼±ÇÑ »ý¼º AppWizard ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ º¹»ç ÇÏ ¿© ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Visual c + +°¡ÀÌ ºñÆ®¸ÊÀ» °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. ºñÆ®¸Ê IDR_HIERSVRTYPE_SRVR_IP ID¸¦ Á¦°ø ÇØ¾ß ÇÕ´Ï´Ù.

¼­¹ö Áö¿ø »Ó¸¸ ¾Æ´Ï¶ó »ý¼º AppWizard ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ COleIPFrameWnd ¿¡¼­ ÆÄ»ý µÈ Ŭ·¡½º¸¦ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù. µÎ ÆÄÀÏ, IPFRAME¸¦ º¹»ç ÇÕ´Ï´Ù.CPP ¹× IPFRAMEÀÔ´Ï´Ù.H¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ ÇÕ´Ï´Ù. LoadBitmap È£Ãâ IDR_HIERSVRTYPE_SRVR_IP, ÀÌÀü ´Ü°è¿¡¼­ ¸¸µç ºñÆ®¸Ê °¡¸®Å°´Â ÀÖ´ÂÁö È®ÀÎ ÇϽʽÿÀ.

ÀÌÁ¦´Â ¸ðµç »õ·Î¿î ¸®¼Ò½º ¹× Ŭ·¡½º¸¦ ¸¸µç ÇÁ·¹ÀÓ ¿öÅ© µé¿¡ ´ëÇØ ¾Ë°í (±×¸®°í ¾Ë°í ÀÌÁ¦ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ³»ºÎ ÆíÁý Áö¿ø)´Â ÇÊ¿äÇÑ Äڵ带 Ãß°¡ ÇÕ´Ï´Ù. InitInstance ÇÔ¼ö¿¡¼­ È£Ãâ ÇÏ´Â SetServerInfo ¸¦ ¸î °¡Áö ´õ ¸¹Àº ¸Å°³ º¯¼ö¸¦ Ãß°¡ ÇÏ ¿© ÀÌ·ç¾îÁý´Ï´Ù.:

pDocTemplate-gt;SetServerInfo (IDR_HIERSVRTYPE_SRVR_EMB,
 ?? IDR_HIERSVRTYPE_SRVR_IP, RUNTIME_CLASS(CInPlaceFrame))(&G)

±×°ÍÀº Áö±Ý À§Ä¡¿¡¼­ ½ÇÇàÇÒ Áغñ°¡ ¶ÇÇÑ À§Ä¡¿¡¼­ Ȱ¼ºÈ­¸¦ Áö ¿øÇÏ´Â ¸ðµç ÄÁÅ×À̳ʿ¡. ÇÏÁö¸¸, °Å±â¿¡ ÇϳªÀÇ »ç¼ÒÇÑ ¹ö±× Äڵ忡 ¿©ÀüÈ÷ ¼û¾î ÀÖ´Ù. HIERSVR´Â ¸¶¿ì½º ¿À¸¥ÂÊ ´ÜÃ߸¦ ´©¸¦ ¶§ Ç¥½Ã µÇ´Â »óȲ¿¡ ¸Â´Â ¸Þ´º¸¦ Áö¿ø ÇÕ´Ï´Ù. ÀÌ ¸Þ´º´Â HIERSVR¸¦ ¿ÏÀüÈ÷ ¿­°í ÇÏÁö¸¸ Æ÷ÇÔ-Á¦ÀÚ¸®¿¡¼­ ÆíÁýÇÒ ¶§ ÀÛµ¿ ÇÏÁö ¾Ê½À´Ï´Ù ¶§ ÀÛµ¿ ÇÕ´Ï´Ù. ÀÌÀ¯´ÂÀÌ ÇÑ ÁÙÀÇ Äڵ忡¼­ Cserverview::onrbuttondown¿¡ °íÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

pMenu-gt;TrackPopupMenu(TPM_CENTERALIGN | TPM_RIGHTBUTTON,
 ?? point.x, point.y, AfxGetApp()-> m_pMainWnd)

ÅëÁö¿¡ ´ë ÇÑ ÂüÁ¶°¡ AfxGetApp ()-gt; m_pMainWnd. ¼­¹ö°¡ ¿øÀ§Ä¡ Ȱ¼ºÈ­ ¶§ ÁÖ Ã¢ ÇϰíÀÖ´Ù m_pMainWnd ¼³Á¤ µÇ¾î ÇÏÁö¸¸ º¸Åë º¸ÀÌÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ,ÀÌ Ã¢ MDI ÇÁ·¹ÀÓ Ã¢ ¼­¹ö¸¦ ¿ÏÀüÈ÷ ¿­°í ³ªÅ¸³­´Ù ¶Ç´Â µ¶¸³ ½ÇÇàÇü ½ÇÇà ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎ À©µµ¿ì¸¦ ¸»ÇÕ´Ï´Ù. Ȱ¼º ÇÁ·¹ÀÓ Ã¢À» ÂüÁ¶ ÇÏÁö ¾Ê½À´Ï´Ù-¶§ ÇöÀç À§Ä¡¿¡¼­ Ȱ¼ºÈ­´Â COleIPFrameWnd¿¡¼­ ÆÄ»ý µÈ ÇÁ·¹ÀÓ Ã¢. Á¦ÀÚ¸®¿¡¼­ ÆíÁý ÇÏ °í,ÀÌ ¹öÀüÀÇ MFC AfxGetMainWnd»õ ÇÔ¼ö¸¦ Ãß°¡ ÇÏ´Â °æ¿ì¿¡ ¿Ã¹Ù¸¥ Ȱ¼º âÀ» ¾òÀ¸·Á¸é. ´ë½ÅÀÌ ÇÔ¼ö¸¦ »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù ÀϹÝÀûÀ¸·Î, AfxGetApp()-> m_pMainWnd. ÀÌ Äڵ带 ´ÙÀ½°ú °°ÀÌ º¯°æ ÇØ¾ß:

 pMenu-gt;TrackPopupMenu(TPM_CENTERALIGN | TPM_RIGHTBUTTON,
 ?? point.x, point.y, AfxGetMainWnd(&))

ÀÌÁ¦ OLE ¼­¹ö¸¦ ÃÖ¼Ò ±â´É À§Ä¡¿¡¼­ Ȱ¼ºÈ­¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¾ÆÁ÷µµ ¸¹Àº ±â´É MFC/Àº¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø¾ú´ø MFC/OLE 2¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Çö ÇÏ °í ÀÖ´Â ±â´É¿¡ ´õ ¸¹Àº ¾ÆÀ̵ð¾î¿¡ ´ë ÇÑ HIERSVR »ùÇÃÀ» ÂüÁ¶ ÇϽʽÿÀ. HIERSVR¸¦ ±¸Çö ÇÏ´Â ±â´É Áß ÀϺδ ´ÙÀ½°ú °°½À´Ï´Ù.:

MFC 3.0¿¡¼­ HIERSVR »ùÇÃÀº ¶ÇÇÑ ÀÚ»çÀÇ ¼­¹ö Ç׸ñ¿¡ ´ë ÇÑ ¾à°£ ´Ù¸¥ µðÀÚÀÎÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¸ð¸®¸¦ Àý¾à ÇÏ´Â µ¥ µµ¿òÀÌ ÇÏ °í ±ÍÇÏÀÇ ¸µÅ©¸¦ Á» ´õ À¯¿¬ ÇÏ °Ô ¸¸µå´Â. HIERSVRÀÇ 2.0 ¹öÀü°ú Æ®¸®ÀÇ °¢ ³ëµå¿¡ ÇÑ COleServerItem. COleServerItem ÀÌ·¯ÇÑ ³ëµåÀÇ °¢°¢¿¡ ´ë ÇÑ ¾ö°Ý ÇÏ °Ô ÇÊ¿äÇÑ °Í º¸´Ù Á¶±Ý ´õ ¸¹Àº ¿À¹ö Çìµå¸¦ ¿î¹Ý ÇÏÁö¸¸ COleServerItem °¢ Ȱ¼º ¸µÅ©¿¡ ´ë ÇÑ ÇÊ¿ä ÇÕ´Ï´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ ºÎºÐÀ» µé¾î, ¾î¶² ÁÖ¾îÁøµÈ ½Ã°£¿¡ ¸Å¿ì ¸î °¡Áö Ȱ¼º ¸µÅ© ÀÖ½À´Ï´Ù. ÀÌ º¸´Ù È¿À²ÀûÀ¸·Î ¸¸µé·Á°í,ÀÌ ¹öÀüÀÇ MFC¿¡¼­ HIERSVR COleServerItem¿¡¼­ ³ëµå¸¦ ºÐ¸® ÇÕ´Ï´Ù. ±×°ÍÀº CServerNode ¹× CServerItem Ŭ·¡½º ÀÖ´Ù. CServerItem ( COleServerItem¿¡¼­ ÆÄ»ý)¸¸ Çʿ信 µû¶ó ¸¸µé¾îÁý´Ï´Ù. ÄÁÅ×ÀÌ³Ê (¶Ç´Â ÄÁÅ×À̳Ê)´Â ƯÁ¤ ³ëµå¿¡ ƯÁ¤ ¸µÅ©¸¦ »ç¿ë ÇÏ ¿© ÁßÁö, ÀÏ´ÜÀº Cservernode¿Í °ü·Ã µÈ CServerItem °³Ã¼°¡ »èÁ¦ µË´Ï´Ù. ÀÌ µðÀÚÀÎÀº ´õ È¿À²ÀûÀÌ °í ´õ À¯¿¬ ÇÕ´Ï´Ù. À¯¿¬¼ºÀÇ ¿©·¯ ¼±Åà ¸µÅ©¸¦ ´Ù·ê ¶§ ¿Â´Ù. HIERSVRÀÇ µÎ °¡Áö ¹öÀü Áß ¾î´À ´ÙÁß ¼±ÅÃÀ» Áö¿ø ÇÏÁö¸¸ Ãß°¡ (¿Í °°Àº ¼±Åà ÇÏ·Á¸é ¸µÅ©¸¦ Áö¿ø Çϱâ À§ÇØ) ÈξÀ ´õ ½±°Ô µÉ °Í À̶ó°í HIERSVR COleServerItem ¿ø½Ã µ¥ÀÌÅÍ¿¡¼­ ºÐ¸® µÈ ÀÌÈÄ MFC 3.0 ¹öÀü¡£

±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)

Index