±×·³ ÀÌÁ¦ À§¿¡¼­ ÀÛ¼ºÇÑ ¼Ò½º ÇÁ·Î±×·¥À» ÇÑ ÁÙ¾¿ Â÷·Ê´ë·Î ¶â¾î º¸µµ·Ï ÇÏÀÚ. ¼Ò½º Àüü¸¦ ¿Ïº®ÇÏ°Ô ´Ù ÀÌÇØÇÏÁö´Â ¸øÇÏ´õ¶óµµ ´ëÃæÀÇ ±¸Á¶¸¸ÀÌ¶óµµ ÀÍÇôµÎ±â ¹Ù¶õ´Ù. ¾ðÁ¨°¡´Â ¿ÏÀüÈ÷ ´Ù ÀÌÇØÇØ¾ß ÇÒ ¼Ò½ºÀ̹ǷΠÀμâÇØ ³õ°í ÇÑÁÙ¾¿ ºÐ¼®ÇØ º¸±â ¹Ù¶õ´Ù.

2-2-°¡. WinMain

ÀÌÁ¦ ¼Ò½º¸¦ Â÷±Ù Â÷±ÙÈ÷ ºÐ¼®ÇØ º¸µÇ ±× Àü¿¡ ¿ì¼± Àͼ÷ÇØÁ® ÀÖ´Â µµ½º¿¡¼­¿ÍÀÇ Â÷ÀÌÁ¡À» ¾Ë¾Æº¸ÀÚ.

4Çì´õ ÆÄÀÏ

¿ì¼± Á¦ÀÏ Ã¹ÇàÀ» º¸¸é windows.h Çϳª¸¸ ÀÎŬ·çµåµÇ¾î ÀÖ´Ù. µµ½º¿¡¼­´Â »ç¿ëÇÏ´Â ÇÔ¼ö¿¡ µû¶ó ¿©·¯ °³ÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏÁö¸¸ À©µµ¿ìÁî¿¡¼­´Â ÇϳªÀÇ Çì´õ ÆÄÀÏ¿¡ ¸ðµç API ÇÔ¼öµéÀÇ ¿øÇü°ú »ç¿ëÇÏ´Â »ó¼öµéÀ» ÁË´Ù Á¤ÀÇÇÏ°í Àֱ⠶§¹®¿¡ windows.h¸¸ Æ÷ÇÔÇØ ÁÖ¸é µÈ´Ù. stdio.h³ª conio.h, graphics.h µîÀ» Æ÷ÇÔÇØ ÁÙ ÇÊ¿ä°¡ ¾ø´Ù. ¹°·Ð Ưº°ÇÑ °æ¿ì¿¡´Â ÇØ´çÇÏ´Â Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇØ¾ß ÇÏÁö¸¸ ¿¹Á¦ ¼öÁØ¿¡¼­´Â windows.h¸¸ Æ÷ÇÔ½ÃÅ°¸é °ÅÀÇ ¹®Á¦°¡ ¾ø´Ù. windows.h Çì´õ ÆÄÀÏÀº ±âº»ÀûÀÎ µ¥ÀÌÅÍ Å¸ÀÔ, ÇÔ¼ö ¿øÇü µîÀ» Á¤ÀÇÇÏ¸ç ±× ¿Ü ÇÊ¿äÇÑ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ±×·¡¼­ À©µµ¿ìÁî ÇÁ·Î±×·¥ÀÇ Ã¹ ÁÙÀº °ÅÀÇ Ç×»ó #include <windows.h> ·Î ½ÃÀ۵ȴÙ.

4 ½ÃÀÛÁ¡

´ÙÀ½À¸·Î Â÷À̳ª´Â Á¡Àº ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÁ¡ÀÎ ¿£Æ®¸® Æ÷ÀÎÆ®(Entry Point)°¡ main ÇÔ¼ö°¡ ¾Æ´Ï¶ó WinMainÀ̶ó´Â Á¡ÀÌ´Ù. À©µµ¿ìÁî ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÁ¡Àº mainÀÌ ¾Æ´Ñ WinMainÀÌ´Ù. ¿øÇüÀº ´ÙÀ½°ú °°´Ù.

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow)

µµ½º¿¡¼­ÀÇ main ÇÔ¼ö´Â Àμö »ç¿ë¿©ºÎ¿¡ µû¶ó ¿©·¯ °¡Áö ¿øÇüÀÌ ÀÖÁö¸¸ WinMainÀÇ ¿øÇüÀº À§¿Í °°ÀÌ °íÁ¤µÇ¾î ÀÖ´Ù. APIENTRY ÁöÁ¤ÀÚ´Â __stdcallÇü È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù´Â ¶æÀε¥ ÀÏ´ÜÀº ¾ø´Ù°í »ý°¢Çصµ ¹«¹æÇÏ´Ù. 4°³ÀÇ Àμö¸¦ ÃëÇϴµ¥ °¢ ÀμöÀÇ Àǹ̴ ´ÙÀ½°ú °°´Ù.

Àμö ÀǹÌ
hInstance ÇÁ·Î±×·¥ÀÇ ÀνºÅϽº ÇÚµé
hPrevInstance ¹Ù·Î ¾Õ¿¡ ½ÇÇàµÈ ÇöÀç ÇÁ·Î±×·¥ÀÇ ÀνºÅϽº ÇÚµé. ¾øÀ» °æ¿ì´Â NULLÀÌ µÇ¸ç WIN32¿¡¼­´Â Ç×»ó NULLÀÌ´Ù. ȣȯ¼ºÀ» À§Çؼ­¸¸ Á¸ÀçÇÏ´Â ÀμöÀ̹ǷΠ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù.
lpCmdLine ¸í·ÉÇàÀ¸·Î ÀÔ·ÂµÈ ÇÁ·Î±×·¥ ÀμöÀÌ´Ù. µµ½ºÀÇ argvÀμö¿¡ ÇØ´çÇÑ´Ù.
nCmdShow ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ÇüÅÂÀ̸ç ÃÖ¼ÒÈ­, º¸Åë¸ð¾ç µîÀÌ Àü´ÞµÈ´Ù.

ÀÌ Áß hInstance ÀÌ¿Ü¿¡´Â Àß »ç¿ëµÇÁö ¾Ê´Â´Ù. ÀνºÅϽº(Instance)¶ó´Â ¸»Àº Ŭ·¡½º°¡ ¸Þ¸ð¸®¿¡ ½ÇÁ¦·Î ±¸ÇöµÈ ½Çü¸¦ ÀǹÌÇÑ´Ù. À©µµ¿ìÁî¿ë ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ÀÌ µ¿½Ã¿¡ ½ÇÇàµÇ´Â ¸ÖƼŽºÅ· ½Ã½ºÅÛÀÏ »Ó¸¸ ¾Æ´Ï¶ó ÇϳªÀÇ ÇÁ·Î±×·¥ÀÌ ¿©·¯ ¹ø ½ÇÇàµÉ ¼öµµ ÀÖ´Ù. À̶§ ½ÇÇàµÇ°í ÀÖ´Â °¢°¢ÀÇ ÇÁ·Î±×·¥À» ÇÁ·Î±×·¥ ÀνºÅϽº¶ó°í ÇÏ¸ç °£´ÜÈ÷ ÁÙ¿©¼­ ÀνºÅϽº¶ó°í ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ¸Þ¸ðÀåÀÌ µÎ¹ø ½ÇÇàµÇ¾î ÀÖ´Ù°í ÇØ º¸ÀÚ.

ÀÌ ¶§ µÎ ÇÁ·Î±×·¥Àº ¸ðµÎ ¸Þ¸ðÀå(Notepad.exe)ÀÌÁö¸¸ ¿î¿µÃ¼Á¦´Â °¢°¢ ´Ù¸¥ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ÀνÄÇÑ´Ù. À̶§ °¢ ¸Þ¸ðÀåÀº ¼­·Î ´Ù¸¥ ÀνºÅϽº ÇÚµéÀ» °¡Áö¸ç ¿î¿µÃ¼Á¦´Â ÀÌ ÀνºÅϽº Çڵ鰪À¸·Î µÎ °³ÀÇ ¸Þ¸ðÀåÀ» ¼­·Î ±¸º°ÇÑ´Ù.

hInstance¶õ ÇÁ·Î±×·¥ ÀÚü¸¦ ÀÏÄ´ Á¤¼ö°ªÀ̸ç API ÇÔ¼ö¿¡¼­ ¼ö½Ã·Î »ç¿ëµÈ´Ù. ±×·¡¼­ ÀÌ ¿¹Á¦¿¡¼­´Â WinMainÀÇ Àμö·Î Àü´ÞµÈ hInstance°ªÀ» Àü¿ª º¯¼ö g_hInst¿¡ ´ëÀÔÇØ µÎ¾ú´Ù. hInstance Àμö´Â ±â¾ïºÎ·ù°¡ Áö¿ª º¯¼öÀ̱⠶§¹®¿¡ WinMainÀÇ ¹Û¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â g_hInst °ªÀ» ´çÀå »ç¿ëÇÏÁö ¾Ê°í ÀÖÁö¸¸ ¾ÕÀ¸·ÎÀÇ ¿¹Á¦¿¡¼­´Â ÀÌ °ªÀ» »ç¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù.

±×¸®°í lpszClass¶ó´Â Àü¿ª ¹®ÀÚ¿­ÀÌ Á¤ÀǵǾî Àִµ¥ ÀÌ ¹®ÀÚ¿­Àº À©µµ¿ì Ŭ·¡½º¸¦ Á¤ÀÇÇϴµ¥ »ç¿ëµÈ´Ù. Àá½Ã ÈÄ¿¡ ÀÌ ¹®ÀÚ¿­ÀÌ »ç¿ëµÇ´Â °÷¿¡¼­ ¼³¸íÀ» Çϵµ·Ï ÇÑ´Ù.

HINSTANCE g_hInst;
LPSTR lpszClass="First";
4 ¸Þ½ÃÁö ó¸® ÇÔ¼ö

ÀÌ ÇÁ·Î±×·¥À» ÀÚ¼¼È÷ º¸¸é µÎ°³ÀÇ ÇÔ¼ö¸¸ ÀÖ´Ù. Çϳª´Â ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÁ¡ÀÎ WinMainÀÌ¸ç ³ª¸ÓÁö Çϳª´Â WndProcÀÌ´Ù. µµ½º¿¡¼­´Â main ÇÔ¼ö¸¸À¸·Îµµ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖÁö¸¸ À©µµ¿ìÁî¿¡¼­´Â ¾ÆÁÖ Æ¯º°ÇÑ °æ¿ì¸¦ Á¦¿ÜÇÏ°í´Â ÀÌ µÎ°³ÀÇ ÇÔ¼ö°¡ ¸ðµÎ ÀÖ¾î¾ß ÇÑ´Ù.

WinMain¿¡¼­´Â À©µµ¿ì¸¦ ¸¸µé°í È­¸é¿¡ Ãâ·ÂÇϱ⸸ ÇÒ »ÓÀÌ¸ç ´ëºÎºÐÀÇ ÀÏÀº WndProc¿¡¼­ ÀÌ·ç¾îÁø´Ù. WinMainÀº ÇÁ·Î±×·¥À» ½ÃÀÛ½ÃÅ°±â¸¸ ÇÏ¸ç ½ÇÁúÀûÀΠ󸮴 ´ëºÎºÐ WndProc¿¡¼­ ÀÌ·ç¾îÁø´Ù. WinMainÀÇ ¸ð¾çÀº ´ëü·Î ÀÏÁ¤Çϸç Ưº°ÇÑ ÀÏÀ» ÇÏÁö ¾ÊÁö¸¸ WndProc´Â ÇÁ·Î±×·¥¿¡ µû¶ó õÂ÷¸¸º°·Î ´Þ¶óÁø´Ù. ±×·¡¼­ ¼Ò½º¸¦ ºÐ¼®ÇÒ ¶§ ÁÖÀDZí°Ô ºÁ¾ß ÇÒ ºÎºÐÀº WinMainÀÌ ¾Æ´Ï¶ó WndProcÀÌ´Ù. WinMain ¹Ù·Î À­ºÎºÐ¿¡ WndProc ÇÔ¼öÀÇ ¿øÇüÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù.

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


±×¸®°í ¼Ò½ºÀÇ µÞºÎºÐ¿¡´Â ÀÌ ÇÔ¼öÀÇ º»Ã¼°¡ Á¤ÀǵǾî ÀÖ´Ù.


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