5-5 ¹®ÀÚ¿­ Å×À̺í

À©µµ¿ìÁî¿¡¼­´Â ¹®ÀÚ¿­µéµµ ¸®¼Ò½ºÀÇ ÀÏÁ¾À¸·Î Ãë±ÞµÈ´Ù. ´ë·®ÀÇ ¹®ÀÚ¿­À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥Àº ¸®¼Ò½º¿¡ ¹®ÀÚ¿­À» Á¤ÀÇÇØ µÎ°í ÇÊ¿äÇÒ ¶§¸¶´Ù ¸®¼Ò½º¿¡ ¹®ÀÚ¿­À» Àоî¿Í »ç¿ëÇÑ´Ù. ÀÏ´Ü ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ ¿¹Á¦¸¦ °°ÀÌ ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.

StrTableÀ̶ó´Â À̸§À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ApiStart.txt ÆÄÀÏÀ» º¹»çÇØ ¿Â´Ù. lpszClass ¹®ÀÚ¿­À» "StrTable"·Î º¯°æÇÑ ÈÄ ¼Ò½º ÆÄÀÏÀ» ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃÄÑ Ç¥ÁØÀûÀÎ ÇÁ·ÎÁ§Æ®¸¦ ¸ÕÀú ¸¸µç´Ù. ÀÌ »óÅ¿¡¼­ ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ Á¤ÀÇÇϱâ À§ÇØ Insert/Resource Ç׸ñÀ» ¼±ÅÃÇÏ°í ¸®¼Ò½º Á¾·ù¿¡¼­ String TableÀ» ¼±ÅÃÇÑ´Ù.

´ÙÀ½°ú °°Àº ¹®ÀÚ¿­ ¸®¼Ò½º ÆíÁý±â°¡ ¿­¸± °ÍÀÌ´Ù. ¾×¼¿·¯·¹ÀÌÅÍ ÆíÁý±â¿Í À¯»çÇÏ°Ô »ý°å´Âµ¥ ¾ÆÁ÷ Á¤ÀÇµÈ ¹®ÀÚ¿­ÀÌ ¾øÀ¸¹Ç·Î ºñ¾î ÀÖ´Ù.

»õ ¹®ÀÚ¿­À» »ðÀÔÇϱâ À§ÇØ ºóÄ­À» ´õºíŬ¸¯ÇÏ¿© ¼Ó¼º ÆíÁý±â¸¦ ¿­°í ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÑ´Ù.

ID´Â µðÆúÆ®·Î Á¦½ÃµÇ´Â IDS_STRING1À» ¼±ÅÃÇϰí Caption¿¡ Àû´çÇÑ ¹®ÀÚ¿­À» ÀÔ·ÂÇÏ¿´´Ù. ¸®¼Ò½º ½ºÅ©¸³Æ®¸¦ StrTable.rc·Î ÀúÀåÇϰí ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃŰ¸é ¹®ÀÚ¿­ ¸®¼Ò½º´Â ´Ù ¸¸µç °ÍÀÌ´Ù. ÀÌÁ¦ ÀÌ ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ ¼Ò½º¿¡¼­ »ç¿ëÇϱâ À§ÇØ Äڵ带 ÀÛ¼ºÇÑ´Ù.

#include "resource.h"
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	char str[256];
	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		LoadString(g_hInst, IDS_STRING1, str, 256);
		TextOut(hdc,10,10,str,strlen(str));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

¸®¼Ò½º ID¸¦ ÀνÄÇϱâ À§ÇØ resource.h¸¦ ¸ÕÀú Æ÷ÇÔ½ÃÄ×À¸¸ç WM_PAINT¿¡¼­ ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ Àоî¿Í È­¸éÀ¸·Î Ãâ·ÂÇÏ¿´´Ù. ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ ÀÐÀ» ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

int LoadString( HINSTANCE hInstance, UINT uID, LPTSTR lpBuffer, int nBufferMax);

Àμö°¡ ³× °³³ª µÇÁö¸¸ º°·Î º¹ÀâÇÏÁö ¾Ê´Ù. ù¹øÂ° Àμö´Â ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ °¡Áø ÀνºÅϽº ÇÚµéÀε¥ ÀÌ °ªÀº WinMainÀÇ Ã¹¹øÂ° Àμö·Î Àü´ÞµÇ¸ç ApiStart.txt¿¡¼­ ÀÌ Àμö¸¦ Àü¿ª º¯¼ö g_hInst¿¡ ´ëÀÔÇØ µÎ¾úÀ¸¹Ç·Î g_hInst¸¦ ½á ÁÖ¸é µÈ´Ù. µÎ¹øÂ° Àμö·Î Àоî¿Ã ¹®ÀÚ¿­ÀÇ ID¸¦ ÁÖ°í ¼¼¹øÀç Àμö·Î ¹®ÀÚ¿­À» ÀÐÀ» ¹öÆÛ, ³×¹øÂ° Àμö·Î ¹öÆÛÀÇ ±æÀ̸¦ ÁÖ¸é µÈ´Ù.

LoadString(g_hInst, IDS_STRING1, str, 256);

ÀÌ ÇÔ¼ö È£Ãâ¹®ÀÇ Àǹ̸¦ ÇØ¼®ÇØ º¸¸é g_hInst ÀνºÅϽº¿¡ Á¤ÀÇµÈ IDS_STRING1 ¹®ÀÚ¿­À» ±æÀÌ 256ÀÇ str ¹®ÀÚ ¹è¿­·Î ÀÐ¾î ¿À¶ó´Â ¶æÀÌ´Ù. ¹®ÀÚ¿­ ¸®¼Ò½º´Â ÃÖ´ë 255¹®ÀÚ±îÁö °¡´ÉÇϹǷΠ¹öÆÛ ±æÀÌ´Â 256À̸é ÃæºÐÇÏ´Ù. ÀÌ·¸°Ô ÀÐÀº ¹®ÀÚ¿­ strÀ» TextOutÀ¸·Î È­¸é¿¡ Ãâ·ÂÇÏ¿´´Ù.

¹®ÀÚ¿­ ¸®¼Ò½º¿¡ Á¤ÀÇµÈ ¹®ÀÚ¿­ÀÌ È­¸éÀ¸·Î Ãâ·ÂµÇ¾ú´Ù. º°·Î ¾î·Á¿î ³»¿ëÀº ¾øÀ¸¹Ç·Î ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ Á¤ÀÇÇÏ°í »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­´Â ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. ±×·±µ¥ ÀÌ·¸°Ô ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ Á¤ÀÇÇØ¼­ ¾²´Â ÀÌÀ¯´Â ¹»±î? ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ´Ü¼øÇÑ ¸ñÀûÀ̶ó¸é ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇÏ´Â °ÍÀÌ ÈξÀ ´õ ½¬¿ö º¸ÀδÙ.

	char str[256]="String Resource Test";
	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,str,strlen(str));
		........

¹®ÀÚ ¹è¿­¿¡ ¹Ù·Î ¹®ÀÚ¿­À» ÃʱâÈ­½ÃÄÑ ÀÌ ¹®ÀÚ¿­À» È­¸éÀ¸·Î Ãâ·ÂÇÏ¸é ±×¸¸ÀÌ´Ù. ¹°·Ð ´Ü¼øÇÑ ¹®ÀÚ¿­ Ãâ·ÂÀÌ ¸ñÀûÀ̶ó¸é ÀÌ·± ¹æ¹ýÀÌ ´õ ÆíÇϰÚÁö¸¸ ¹®ÀÚ¿­ ¸®¼Ò½º´Â ¿©·¯°¡Áö ¸é¿¡¼­ ÀÌÁ¡À» ÁØ´Ù.

¿ì¼± ù°·Î ¹®ÀÚ¿­ ÀÚü°¡ ÄÚµå¿Í ºÐ¸®µÊÀ¸·Î½á ¹®ÀÚ¿­¸¸ µû·Î °ü¸®ÇÒ ¼ö ÀÖÀ¸¸ç ÇÁ·ÎÁ§Æ®¸¦ À¯ÁöÇϴµ¥µµ Å« µµ¿òÀ» ÁØ´Ù. ÇÁ·Î±×·¥Àº ½ÇÇàÁß¿¡ »ç¿ëÀÚ°¡ Á¶ÀÛÀ» À߸øÇÏ¸é ¿¡·¯ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ¸ç °£´ÜÇÑ ¾È³»¹®À̳ª µµ¿ò¸»À» º¸¿©Áֱ⵵ ÇÑ´Ù. ÀÌ·± ¸Þ½ÃÁö ¹®ÀÚ¿­µéÀÌ ¸¹À» °æ¿ì ¼ö¹é°³°¡ µÇ´Âµ¥ ÀÌ ¹®ÀÚ¿­µéÀÌ ¸ù¶¥ ¼Ò½º Äڵ忡 ´Ù µé¾î°¡ ÀÖ´Ù°í ÇÑ´Ù¸é Á¤¸» ²ûÁ÷ÇÒ °ÍÀÌ´Ù. ¸Þ½ÃÁö ¹®ÀÚ¿­À̳ª ¾È³»¹®µéµµ »ç¿ëÀÚ¿¡ ´ëÇÑ ¼¼½ÉÇÑ ¹è·ÁÀ̱⠶§¹®¿¡ ¹®ÀåÀ» ¹Ù¸£°Ô ¿¹ÀÇÀÖ°Ô ÀÛ¼ºÇØ¾ß Çϴµ¥ ÇÁ·Î±×·¡¸Ó°¡ Äڵ忡 ½Å°æ¾²´Ù º¸¸é ÀÌ·± ¸Þ½ÃÁöµé¿¡ Á¦´ë·Î ½Å°æÀ» ¾µ ¼ö°¡ ¾ø´Ù. ¹®ÀÚ¿­µéÀÌ ¸®¼Ò½º·Î ºÐ¸®µÇ¾î ÀÖ´Ù¸é Àü¹® µðÀÚÀ̳ʰ¡ ¸Þ½ÃÁöµéÀ» ÇѲ¨¹ø¿¡ ¸ð¾Æ ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸¸¾à ¾î¶² ÀÌÀ¯·Î ¸Þ½ÃÁöµéÀ» ÀüºÎ ¼öÁ¤ÇØ¾ß ÇÑ´Ù°í ÇØº¸ÀÚ. À̶§ ÄÚµåÀÇ ¿©±âÀú±â¿¡ ¹ÚÇôÀÖ´Â ¸Þ½ÃÁö¸¦ ã¾Æ °íÄ¡´Â °æ¿ì¿Í ¸®¼Ò½º ÆíÁý±â¿¡¼­ ¸Þ½ÃÁö¸¦ ÀϰýÀûÀ¸·Î °íÄ¡´Â °Í Áß ¾î¶² °ÍÀÌ ´õ ºü¸£°í Á¤È®ÇÒ °ÍÀΰ¡´Â ½±°Ô »ó»óÀÌ °¥ °ÍÀÌ´Ù.

¹®ÀÚ¿­ ¸®¼Ò½º¸¦ »ç¿ëÇÏ´Â µÎ¹øÂ° ÀÌÁ¡Àº ´Ù±¹¾î ¹öÀüÀ» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¸®¼Ò½º´Â Á¶°Ç¿¡ µû¶ó ±³Ã¼ÇÒ ¼ö Àֱ⠶§¹®¿¡ °æ¿ì¿¡ µû¶ó ´Ù¸¥ ¹®ÀÚ¿­À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ¿µ¾î ¸®¼Ò½º Çѹú, ÇÑ±Û ¸®¼Ò½º ÇѹúÀ» °¢°¢ µû·Î ¸¸µé¾î ³õÀ¸¸é ¼Ò½º ÄÚµå´Â °Çµå¸± ÇÊ¿ä¾øÀÌ ¸®¼Ò½º¸¸ ±³Ã¼ÇÔÀ¸·Î½á ¿µ¹® ÇÁ·Î±×·¥, ÇÑ±Û ÇÁ·Î±×·¥À» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ¸®¼Ò½º¸¸ ¸¸µé¸é ÀϺ»À̳ª Áß±¹ ¾îµðµçÁö ÆÈ¾Æ¸ÔÀ» ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù. ¹°·Ð ¹®ÀÚ¿­ÀÌ ¼Ò½º¿¡ ÀÛ¼ºµÇ¾î À־ ã¾Æ¼­ °íÃÄÁÖ¸é °¡´ÉÀÌ¾ß ÇϰÚÁö¸¸ ¹«Ã´ ¾î·Á¿î ÀÏÀÌ´Ù.

¶ÇÇÑ ¹®ÀÚ¿­ÀÌ ¼Ò½º¿Í ºÐ¸®µÇ¾î ÀÖÀ¸¸é ¹®ÀÚ¿­À» °íÃĵµ ¼Ò½º¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾ø¾î °³¹ß ±â°£µµ »¡¶óÁø´Ù. ÀÌ·± ¿©·¯°¡Áö ÀåÁ¡ÀÌ Àֱ⠶§¹®¿¡ ¾ÆÁÖ °£´ÜÇÑ ¹®ÀÚ¿­ÀÎ °æ¿ì¸¦ Á¦¿ÜÇϰí Á» ±æ´Ù ½ÍÀº ¹®ÀÚ¿­Àº ¿Ø¸¸ÇÏ¸é ¹®ÀÚ¿­ ¸®¼Ò½º·Î ¸¸µé¾î ¾²´Â °ÍÀÌ ÁÁ´Ù. ÇÊÀÚ´Â ÇѶ§ ÀÌ·± ¿øÄ¢À» ¹«½ÃÇÑ ³ª¸ÓÁö "±×¶ó¸ð ¾ÈµÅ´Âµ¥¿¹"¶ó°í Àå³­À¸·Î ¸Þ½ÃÁö¸¦ ½á ³ù´Ù°¡ ÆÄÀ̳Πº£Å¸¿¡¼­ ÀÌ ¸Þ½ÃÁö¸¦ ã¾Æ °íÄ£ ÀûÀÌ ÀÖ¾ú´Âµ¥ ¸¸¾à ±×´ë·Î Á¦Ç°À¸·Î ³ª°¬´Ù°¡´Â Å« ¿ôÀ½°Å¸®°¡ µÉ »· Çß¾ú´Ù. ¸Þ¸ð¸® »ç¿ë¸é¿¡ À־µµ Äڵ忡 ¹®ÀÚ¿­À» ¹Ù·Î ±âÀÔÇÏ´Â °Íº¸´Ù ¹®ÀÚ¿­ ¸®¼Ò½º¸¦ »ç¿ëÇÏ´Â °ÍÀÌ À¯¸®ÇÏ´Ù. ¿î¿µÃ¼Á¦´Â ²À ÇÊ¿äÇÑ ¹®ÀÚ¿­¸¸ ¸Þ¸ð¸®·Î ÀоîµéÀϸ¸Å­ Áö´ÉÀûÀ¸·Î ¸Þ¸ð¸®¸¦ °ü¸®ÇØÁֱ⠶§¹®ÀÌ´Ù.

ÀÌ»óÀ¸·Î À©µµ¿ìÁî¿¡¼­ »ç¿ëµÇ´Â ¸î°¡Áö ¸®¼Ò½º¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò´Âµ¥ À̿ܿ¡µµ Áß¿äÇÑ ¸®¼Ò½º·Î ºñÆ®¸Ê°ú ´ëÈ­»óÀÚ°¡ ÀÖ´Ù. ºñÆ®¸Ê¿¡ ´ëÇØ¼­´Â ´ÙÀ½ÀåÀÎ 6Àå¿¡¼­, ´ëÈ­»óÀÚ¿¡ ´ëÇØ¼­´Â 8Àå¿¡¼­ º°µµ·Î °øºÎÇÒ °ÍÀÌ´Ù.


¸ñ·Ï º¸±â  ´ÙÀ½ °­Á            written by http://www.winapi.co.kr