´ëü °¡´ÉÇÑ ¸Å°³ º¯¼ö (µî·ÏÀÚÀÇ Àü󸮱â)¸¦ »ç¿ë ÇÏ ¿©

´ëü °¡´ÉÇÑ ¸Å°³ º¯¼ö ·±Å¸ÀÓ µ¥ÀÌÅ͸¦ ÁöÁ¤ ÇÏ´Â µî·Ï Ŭ¶óÀ̾ðÆ®¸¦ Çã¿ë ÇÕ´Ï´Ù. ÀÌ À§ÇØ µî·Ï ´ëü Áöµµ¿¡ ¿¬°ü µÈ ½ºÅ©¸³Æ®¿¡¼­ ´ëü °¡´ÉÇÑ ¸Å°³ º¯¼ö °ª ÀÔ·ÂÀ» À¯Áö ÇÕ´Ï´Ù. µî·Ï ½ÇÇà ½Ã ÀÌ·¯ÇÑ Ç׸ñÀ» ¸¸µì´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­´Â ÀÌ·¯ÇÑ ´Ü°è¡£

¸ðµâ %¸¦ »ç¿ë ÇÏ ¿©

ATL °³Ã¼ ¸¶¹ý»ç¸¦ »ç¿ë ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ÀÚµ¿À¸·Î »ý¼º %MODULE% . ATL ¼­¹ö DLL ¶Ç´Â EXEÀÇ ½ÇÁ¦ À§Ä¡¿¡ ´ë ÇÑÀÌ ´ëü °¡´É ¸Å°³ º¯¼ö »ç¿ë¡£

¿Ü¿¡ Ãß°¡ %MODULE% ½ºÅ©¸³Æ®¸¦ ATL °³Ã¼ ¸¶¹ý»ç ¶ÇÇÑ ´ÙÀ½ ÁÙÀ» Ãß°¡ °³Ã¼ÀÇ Å¬·¡½º ¼±¾ð:

DECLARE_REGISTRY_RESOURCEID(IDR_MYCOMAPP)

ÀÌ ¸ÅÅ©·Î È®Àå:

Á¤Àû HRESULT WINAPI UpdateRegistry(BOOL bRegister)
{
 nbsp; _Module.UpdateRegistryFromResource (IDR_MYCOMAPP, bRegister); ¹Ýȯ
}(&N)

¿©±â¼­ _Module ´Â ±Û·Î¹ú CComModule´Â ´ÙÀ½ ¸Þ¼­µå ¹× # define ¹®À» ÂüÁ¶:

UpdateRegistryFromResource (UINT nResID, BOOL bRegister
 nbsp;???? ±¸Á¶Ã¼ _ATL_REGMAP_ENTRY * pMapEntries = NULL);

# define UpdateRegistryFromResource UpdateRegistryFromResource(&N)

ÀÌ ¸Þ¼­µå¸¦ È£Ãâ AtlModuleUpdateRegistryFromResource , ´ÙÀ½ Äڵ带 Æ÷ÇÔ ÇÏ´Â:

ATLAPI AtlModuleUpdateRegistryFromResource(_ATL_MODULE*pM, nbsp;??????? LPCOLESTR lpszRes, BOOL bRegister ±¸Á¶Ã¼ _ATL_REGMAP_ENTRY * pMapEntries IRegistrar * pReg)
{
 ? USES_CONVERSION;
 ? ...
 ? CComPtr <IRegistrar> p;
 ? ...

TCHAR szModule [_MAX_PATH];
 ? GetModuleFileName (¿ÀÈÄ-> m_hInst, szModule, ¿ì¸® ¸ðµÎÀÇ _MAX_PATH);
 ? p-> AddReplacement(OLESTR("Module"), T2OLE(szModule));

...
}

¸Þ¸ðnbsp;??Atl\include\atlimpl.cpp¿¡¼­ÀÌ Äڵ带 ãÀ» ¼ö ÀÖ½À´Ï´Ù(&N).

CoCreateInstance ȹµæ Æ÷ÀÎÅÍ p , ·¹Áö½ºÆ®¶ó¸¦ °¡¸®Å°´Â. AddReplacement ¹®ÀÚ¿­À» Æ÷ÇÔ ÇÏ´Â LPCOLESTR ¸¦ ¼ö½Å ÇÏ´Â ±×·± ´ÙÀ½, " Module ", »Ó¸¸ ¾Æ´Ï¶ó Win32 API ÇÔ¼ö¿¡¼­ Àμö ¹®ÀÚ¿­À» Æ÷ÇÔ ÇÏ´Â LPCOLESTR GetModuleFileName. ´ëü ¸Ê Ç׸ñÀ» Ãß°¡ ÇÏ´ÂÀÌ ÄÚµå´Â Module GetModuleFileName°á°ú¿Í °ü·Ã µÈ °ªÀÌ ÀÖ´Â º¯¼öÀÔ´Ï´Ù. Áö±Ý, Àü󸮱⠺¸°í ÇÕ´Ï´Ù %MODULE% ½ºÅ©¸³Æ®¿¡¼­ ±×°Í GetModuleFileName ÀÇ °ªÀ¸·Î ´ëü µË´Ï´Ù¡£

·±Å¸ÀÓ µ¥ÀÌÅÍ¿Í ½ºÅ©¸³Æ® µ¥ÀÌÅÍ ¿¬°á

Àü󸮱âÀÇ ¶Ç ´Ù¸¥ ¿ëµµ ·±Å¸ÀÓ µ¥ÀÌÅÍ¿Í ½ºÅ©¸³Æ® µ¥ÀÌÅ͸¦ ¿¬°á ÇÏ´Â °Í. ¿¹¸¦ µé¾î ¿ì¸®°¡ ÇÊ¿ä·Î ¹®ÀÚ¿­ ¸ðµâ Àüü °æ·Î Æ÷ÇÔ ÇÏ´Â Ç׸ñ " , 1 "¸¦ ³¡¿¡ Ãß°¡ ÇÕ´Ï´Ù. ¸ÕÀú, ´ÙÀ½°ú °°Àº È®ÀåÀ» Á¤ÀÇ:

'MyGoofyKey' = '% ¸ðµâ %1' s

±×·± ´ÙÀ½ ¸Þ¼­µå¸¦ ó¸® ÇÏ´Â ½ºÅ©¸³Æ® Áß Çϳª¸¦ È£Ãâ Çϱâ Àü¿¡ Áöµµ¸¦ ±³Ã¼ Ãß°¡:

TCHAR szModule [_MAX_PATH]
GetModuleFileName (¿ÀÈÄ gt; m_hInst, szModule, ¿ì¸® ¸ðµÎÀÇ _MAX_PATH);
p-> AddReplacement(OLESTR("Module"), T2OLE(szModule))

½ºÅ©¸³Æ®ÀÇ ±¸¹® ºÐ¼®À» ÇÏ´Â µ¿¾È µî·Ï È®Àå '%MODULE%, 1' ¿¡c:\mycode\mydll.dll, 1¡£

¸Þ¸ðnbsp;??µî·ÏÀÚ ½ºÅ©¸³Æ®¿¡¼­ 4 K ÃÖ´ë ÅäÅ« Å©±âÀÔ´Ï´Ù. (ÅäÅ« ±¸¹®¿¡¼­ ÀνÄÇÒ ¼ö ÀÖ´Â ¿ä¼ÒÀÔ´Ï´Ù.) ÀÌ »ý¼º µÇ°Å³ª Àü󸮱⿡ ÀÇÇØ È®Àå µÈ ÅäÅ«À» Æ÷ÇÔ(&N)¡£

¸Þ¸ðnbsp;??·±Å¸ÀÓ ½Ã ´ëü °ªÀ¸·Î ´ëü, DECLARE_REGISTRY_RESOURCE ¶Ç´Â DECLARE_REGISTRY_RESOURCEID ¸ÅÅ©·Î È£ÃâÀ» Á¦°Å ÇÕ´Ï´Ù. ´ë½Å, È£Ãâ ÇÏ´Â CComModule::UpdateRegistryFromResource, ÀÚ½ÅÀÇ UpdateRegistry ¸â¹ö ÇÔ¼ö·Î ±³Ã¼ ÇÏ °í _ATL_REGMAP_ENTRY ±¸Á¶Ã¼ÀÇ ¹è¿­À» Àü´Þ ÇÕ´Ï´Ù. _ATL_REGMAP_ENTRY ÀÇ ¹è¿­À» {NULL,NULL}·Î ¼³Á¤ µÈ Àû¾îµµ ÇϳªÀÇ Ç׸ñÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×¸®°íÀÌ Ç׸ñ Ç×»ó ¸¶Áö¸· Ç׸ñ À̾î¾ß ÇÕ´Ï´Ù. UpdateRegistryFromResrouce °¡ È£Ãâ µÉ ¶§ ¾×¼¼½º À§¹Ý ¿À·ù°¡ »ý¼º µÉ ±×·¸Áö ¾ÊÀ¸¸é(&N)¡£

Index