[±âŸÁö¿ª] µ¨ÆÄÀÌ ActiveX ÄÁÆ®·Ñ¿¡¼ ISafetyObject ÀÎÅÍÆäÀ̽º ±¸Çö
ÀÛ¼ºÀÚ : ¿À¼öÂù
ÀÛ¼ºÀÏ : 2006-09-29
Á¶È¸ : 233
Ãâ ó : ¹ÌÄ£º´¾Æ¸®°¡ ÀÛ¼º..
Âü °í : MS ActiveX SDK Reference
Inside ATL/COM with Visual C++ Programming - Àüº´¼± Àú
¼öÁ¤ÀÏ :
--------------------------------------------------------------------------------
Âü°í : µ¨4¿¡¼´Â ¾Æ·¡ÀÇ Äڵ尡 ¾à°£ º¯°æµÇ¾î¾ß ÇÕ´Ï´Ù..
°ü·ÃµÈ ³»¿ëÀº ActiveX ÀÚ·á½Ç¿¡ ¿Ã·ÁµÐ ActiveX ÄÁÆ®·ÑÀÇ º¸¾Èó¸®
³»¿ëÀ» Âü°íÇØÁÖ¼¼¿ä..
ActiveX ÄÁÆ®·ÑÀº ÀÚ½ÅÀÌ ºÒ·ÁÁú¶§ ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖ½À
´Ï´Ù..
Âü°í : MSÀÇ ActiveX ±â¼úÀº ÇöÀç Å©°Ô 3°¡Áö·Î ±¸ºÐµÇ´Âµ¥..
¾Æ·¡¿Í °°½À´Ï´Ù..
ActiveX ÄÁÆ®·Ñ
¿ì¸®°¡ ÈçÈ÷ ¾Ë°í ÀÖ´Â ÄÁÆ®·ÑÀ» ĪÇÏ´Â ¸íĪÀÔ´Ï´Ù..
±³À°»ç¾÷ ¹× °ÔÀÓÁ¸ ¿ë¿ª, ÆÛÁñ µî ÀúÈñ°¡ ¸¸µé¾ú´ø
ÄÁÆ®·ÑµéÀÌ ÀÌ¿¡ ¼ÓÇϰí ÀÌ ÄÁÆ®·ÑµéÀº OLE ¼¹ö°¡ µÇ°ÚÁö¿ä..
ÁÖ·Î ÀÎÅÍ³Ý ÀͽºÇ÷η¯¶ó´Â ÄÁÅ×À̳ʿ¡ ÀÇÇØ ·ÎµùµÇ´Â..
ÀÌ ¿Ü¿¡µµ ASP ¼¹ö ÄÄÆ÷³ÍÆ®, MTS ÄÄÆ÷³ÍÆ®, ATL·Î ¸¸µé¾îÁö´Â °¢Á¾ COM
µîµî MSÀÇ ¿Ø¸¸ÇÑ °ÍµéÀº ¸ðÁ¶¸® ActiveX ÄÁÆ®·ÑÀ̶ó ºÒ·¯µµ µË´Ï´Ù..
¹°·Ð OLE ¼¹ö »Ó ¾Æ´Ï¶ó ÄÁÅ×À̳ʵµ ActiveX ÄÁÆ®·Ñ·Î ºÒ¸³´Ï´Ù..
ActiveX ¹®¼
°¢Á¾ ActiveX ÄÁÆ®·Ñµé°ú ¿¬°èµÇ¾î ·ÎµùµÉ ¼ö ÀÖ´Â ¹®¼Æ÷¸äÀ» ĪÇÕ´Ï´Ù..
´ëÇ¥ÀûÀÎ ¿¹°¡ IE¿Í ¿ÀÇǽº°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ÀÎÅͳݿ¡¼ IE¸¦ ÀÌ¿ëÇØ ¿À
Çǽº·Î ÀÛ¼ºµÈ ¸ðµç ¹®¼¸¦ ¹Ù·Î º¼ ¼ö ÀÖ½À´Ï´Ù..
ÀÌ °æ¿ì ¿ÀÇǽº ÇÁ·Î±×·¥ÀÌ OLE¼¹ö°¡ µÇ°í IE°¡ ÄÁÅ×À̳ʰ¡ µÇ¾î ¿ÀÇǽº
¹®¼¸¦ ·ÎµùÇÏ°Ô µÇ´Âµ¥ ÀÌ·¸°Ô ActiveX ±â¼úÀ» ÀÌ¿ëÇØ ·ÎµùµÉ ¼ö ÀÖ´Â
¹®¼¸¦ ĪÇÏ´Â ¸íĪÀ̸ç Á» ´õ Æ÷°ýÀûÀ¸·Î´Â ÀÌ¿¡ °ü·ÃµÈ ±â¼úµéÀ»
°¡¸®Åµ´Ï´Ù..
ActiveX ½ºÅ©¸³ÆÃ
ÀÎÅͳݿ¡¼ ½ºÅ©¸³Æ® ¾ð¾î¸¦ »ç¿ëÇϱâ À§ÇÑ ±â¼ú°ú ±× °³Ã¼µéÀ» °¡¸®Å°´Â
¸íĪÀÔ´Ï´Ù..
IE°¡ ´ëÇ¥ÀûÀÎ ActiveX ½ºÅ©¸³ÆÃÀÇ È£½ºÆ® ÇÁ·Î±×·¥À̰í
MSÀÇ VBScript¿Í JScript (NetscapeÀÇ ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í ½ºÆåÀº
ºñ½ÁÇÏÁö¸¸ ¾à°£ ´Ù¸¥Á¡ÀÌ ÀÖÁÒ..)°¡ ´ëÇ¥ÀûÀÎ ActiveX ½ºÅ©¸³ÆÃ
¿£ÁøÀÇ ¿¹ÀÔ´Ï´Ù.. ¹°·Ð MS¿¡¼ Á¤ÀÇÇϰí ÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦
µû¸£µµ·Ï Á¦ÀÛµÈ ½ºÅ©¸³Æ® ¿£ÁøÀº IE¿¡ Ãß°¡°¡ °¡´ÉÇÕ´Ï´Ù..
°á±¹, ÀÎÅͳݿ¡¼ ´Ù¾çÇÑ ½ºÅ©¸³Æ®¸¦ Áö¿øÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â
±â¼úÀ» ¸»ÇÏ´Â °ÍÀ̶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù..
ActiveX ÄÁÆ®·ÑÀÌ ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÒ¶§ ÄÁÅ×ÀÌ³Ê (ÁÖ·Î IE°¡ µÇ°ÚÁÒ..)´Â
Ä£ÀýÇÏ°Ô »ç¿ëÀÚ¿¡°Ô À§Ç輺ÀÌ ÀÖ´Ù´Â °æ°í¹®À» º¸¿©ÁÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù..
IEÀÇ °æ¿ì º¸¾Èµî±ÞÀ» º¸ÅëÀ¸·Î ÇØ³õ´Â °æ¿ì 100% °æ°í¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í
ÀÖ½À´Ï´Ù.. ¿ÀºêÁ§Æ® ű×Áß ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±æ ¼ö ÀÖ´Â °æ¿ì°¡ Àִµ¥, ÀÌ °æ¿ìµµ
ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÏ°Ô µÇ´Âµ¥ ¿½ÉÈ÷ ¸¸µé¾î³í ÄÁÆ®·ÑÀÌ ·Îµù½Ã¸¶´Ù ÀÌ·± ¿¡
·¯¸Þ½ÃÁö¸¦ º¸ÀÎ´Ù¸é ½ÇÁ¦ »çÀÌÆ®¿¡ Àû¿ë½Ã ¹®Á¦°¡ ¾Æ´Ò ¼ö ¾ø½À´Ï´Ù..
MS¿¡¼´Â ÀÌ·± °æ¿ì ÄÁÆ®·ÑÀÌ ¾ÈÀüÇÏ´Ù´Â ÁõºùÀ» À§ÇØ ISafetyObjec¶ó´Â ÀÎÅÍÆäÀ̽º
¸¦ Á¤ÀÇÇØµÖ ÄÁÆ®·Ñ ³»ºÎ¿¡¼ ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸé ÄÁÅ×ÀÌ³Ê (IE)°¡ °æ°í¸Þ½Ã
Áö¸¦ º¸¿©ÁÖÁö ¾Êµµ·Ï ÁغñÇØµÎ°í ÀÖ½À´Ï´Ù..
MFC¸¦ ÀÌ¿ëÇØ ¸¸µç AtiveX ÄÁÆ®·Ñ¿¡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀº ÀÌ¹Ì Á¶±âºÀ¾¾°¡ ÀÌ °Ô½ÃÆÇ
¿¡ ¿Ã·ÁµÎ¾ú°í Àú´Â µ¨ÆÄÀÌ¿¡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¿Ã¸³´Ï´Ù..
±Ùµ¥ ÀÌ°Ô ¾ÆÁÖ ¿ô±ä°Ô.. ¾Æ¹«Áþµµ ¾ÈÇϱ¸ ±×³É ÀÎÅÍÆäÀ̽º¸¸ ¿ì°Ü ³ÖÀ¸¸é µÈ´Ù´Â°Å
ÁÒ.. ÈêÈê.. ¾ÆÁ÷±îÁø ¹¹ÇÏ·¯ ¸¸µé¾ú³ª Àǽɰ¡´Â ±â´ÉÀÌ°í °³¹ßÀÚ ±ÍÂú°Ô¸¸ ÇØ³ù´Â
µ¥ ´õ µÎ°í ºÁ¾ß°ÚÁÒ..
ÀÏ´Ü º£À̽º Ŭ·¡½ºÀÇ ´ÙÁß»ó¼Ó ºÎºÐ¿¡ IObjectSafety¸¦ Ãß°¡ÇÕ´Ï´Ù..
TExamShowX = class(TActiveForm, IExamShowX, IPersistPropertyBag,
IObjectSafety)
IPersistPropertyBag ÀÎÅÍÆäÀ̽º´Â ű׸¦ ÀÌ¿ëÇØ HTML ÆäÀÌÁö·ÎºÎÅÍ °ªÀ»
³Ñ°Ü¹Þ±â À§ÇØ Ãß°¡µÈ ºÎºÐÀÔ´Ï´Ù..
¹¹ °°ÀÌ ¼³¸íÇÏÁÒ..
°á±¹ ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±â´Ù º¸´Ï ½ºÅ©¸³Æ® ¾ÈÀü¼ºÀ» º¸Àå¹Þ¾Æ¾ß Çß´ø °æ¿ì´Ï±î¿ä..
protected: ¿¡ ¾Æ·¡¿Í °°Àº ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù..
function IPersistPropertyBag.GetClassID =
PersistPropBagGetClassID ;
function IPersistPropertyBag.initNew =
PersistPropBagInitNew ;
function IPersistPropertyBag.Load = PersistPropBagLoad ;
function IPersistPropertyBag.Save = PersistPropBagSave ;
function PersistPropBagGetClassID(out classID : TCLSID)
: HResult ; stdcall ;
function PersistPropBagInitNew : HResult ; stdcall ;
function PersistPropBagLoad(const pPropBag:IPropertyBag ;
const pErrorLog:IErrorLog) : HResult ; stdcall ;
function PersistPropBagSave(const pPropBag:IPropertyBag ;
fClearDirty:BOOL ; fAveAllProperties:BOOL)
: HResult ; stdcall ;
function IObjectSafety.GetInterfaceSafetyOptions
= ObjectSafetyGetInterfaceSafetyOptions ;
function ObjectSafetyGetInterfaceSafetyOptions(riid:TIID ;
var dwSupportedOptions:DWORD ;
var dwEnabledOptions:DWORD) : HResult ; stdcall;
function IObjectSafety.SetInterfaceSafetyOptions
= ObjectSafetySetInterfaceSafetyOptions ;
function ObjectSafetySetInterfaceSafetyOptions(riid:TIID ;
dwOptionsSetMask:DWORD ;
dwEnabledOptions:DWORD) : HResult ; stdcall ;
±×¸®°í ½ÇÁ¦ ±¸ÇöºÎ´Â ¾Æ·¡¿Í °°ÀÌ ÄÚµùÀ» ÇØÁÖ½Ã¸é µÇÁö¿ä..
function TExamShowX.PersistPropBagGetClassID
(out classID : TCLSID) : HResult ;
begin
Result := S_OK ;
end ;
function TExamShowX.PersistPropBagInitNew : HResult ;
begin
Result := S_OK ;
end ;
function TExamShowX.PersistPropBagLoad
(const pPropBag:IPropertyBag ;
const pErrorLog:IErrorLog) : HResult ;
var
v : OleVariant ;
begin
if pPropBag.Read(ServerIP,v,pErrorLog)=S_OK then
begin
m_sServerIP := v ;
Timer.Enabled := True ;
end ;
Result := S_OK ;
end ;
function TExamShowX.PersistPropBagSave
(const pPropBag:IPropertyBag ;
fClearDirty:BOOL ; fAveAllProperties:BOOL)
: HResult ; stdcall ;
var
v : OleVariant ;
begin
v := m_sServerIP ;
pPropBag.Write(ServerIP,v) ;
Result := S_OK ;
end ;
function TExamShowX.ObjectSafetyGetInterfaceSafetyOptions
(riid:TIID ; var dwSupportedOptions:DWORD ;
var dwEnabledOptions:DWORD) : HResult ; stdcall;
begin
Result := S_OK ;
end ;
function TExamShowX.ObjectSafetySetInterfaceSafetyOptions
(riid:TIID ; dwOptionsSetMask:DWORD ;
dwEnabledOptions:DWORD) : HResult ; stdcall;
begin
Result := S_OK ;
end ;
½ÇÁ¦ ÆÄ¶ó¹ÌÅÍ °ªÀ» ¹Þ´Â ºÎºÐ¸¸ »©°í´Â S_OK¸¦ ³Ñ±â´Â°Ô ÀüºÎÀÔ´Ï´Ù..
¹°·Ð ½ÇÁ¦ °¢ ÀÎÅÍÆäÀ̽ºµéÀÇ ±¸ÇöÀº Á» ´õ º¹ÀâÇÏÁö¸¸.. Á¦°¡ Å×½ºÆ®Çغ» °á°í·Î´Â
ÀÎÅÍÆäÀ̽º¿Í ¸Þ½îµå¸¸ Á¸ÀçÇϰí S_OK ¸¸ ¸®ÅϵǸé ÀÎÅÍ³Ý ÀͽºÇ÷η¯´Â ¾ÆÁÖ Çູ
ÇØ ÇÏ´õ±º¿ä..
±â¶÷..