ÀÌ ¿¹Á¦´Â Â÷Àϵå À©µµ¿ì¸¦ °ü¸®Çϱâ À§ÇØ µÎ °³ÀÇ Àü¿ªº¯¼ö¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. g_NewNo´Â »õ·Î ¸¸µé¾îÁö´Â Â÷Àϵ忡°Ô ºÙ¿©ÁÙ µðÆúÆ® ÆÄÀϸíÀ» ¸¸µé±â À§ÇØ ÇÊ¿äÇÏ´Ù. ÃÖÃÊ 0À¸·Î ÃʱâȵǾú´Ù°¡ ¹®¼°¡ ¸¸µé¾îÁú ¶§¸¶´Ù 1¾¿ Áõ°¡ÇÏ¿© À̸§¾øÀ½1, À̸§¾øÀ½2, À̸§¾øÀ½3 ½ÄÀ¸·Î ¹®¼ÀÇ À̸§À» ºÙÀÌ°Ô µÈ´Ù. ÆÄÀÏÀ» »ý¼ºÇØ ³»´Â MDI ÇÁ·Î±×·¥µéÀº »õ·Î Â÷Àϵ带 ¸¸µé ¶§¸¶´Ù À̸§¾øÀ½, noname, untitled, ¹®¼, Á¦¸ñ ¾øÀ½ µîÀÇ µðÆúÆ® À̸§À» ºÙÀ̴µ¥ ÀÌ À̸§µéµµ ¼·Î Áߺ¹µÇ¾î¼´Â ¾ÈµÇ±â ¶§¹®¿¡ µÚ¿¡ 1¾¿ Áõ°¡ÇÏ´Â ÀϷùøÈ£¸¦ ºÙ¿©ÁÖ¸ç ÀÌ ÀϷùøÈ£¸¦ ¹Ù·Î g_NewNo º¯¼ö°¡ °ü¸®ÇÑ´Ù.
g_ChildNumÀº ¿¸° Â÷ÀϵåÀÇ °³¼ö¸¦ ÀúÀåÇÏ´Â °ªÀÌ´Ù. ÃÖÃÊ 0À¸·Î ÃʱâȵǸç Â÷Àϵ尡 ¸¸µé¾îÁú ¶§¸¶´Ù 1¾¿ Áõ°¡ÇÏ°í Â÷Àϵ尡 Æı«µÇ¸é 1 °¨¼ÒÇÑ´Ù. DGChildProcÀÇ WM_CREATE¿Í WM_DESTROY¿¡¼ g_ChildNumÀ» Áõ°¨½ÃÅ°¹Ç·Î ÀÌ °ªÀ» ÀÐÀ¸¸é ÇöÀç ¸î °³ÀÇ Â÷Àϵ尡 ¿·Á ÀÖ´ÂÁö ¹Ù·Î ¾Ë ¼ö ÀÖ´Ù. Â÷ÀÏµå °³¼ö´Â À©µµ¿ì ¿°Å¸¦ Çغ¸¸é ½Ç½Ã°£À¸·Î ±¸ÇÒ ¼öµµ ÀÖÁö¸¸ ½Ã°£ÀÌ ¿À·¡ °É¸®±â ¶§¹®¿¡ Àü¿ªº¯¼ö·Î ±× °³¼ö¸¦ À¯ÁöÇϵµ·Ï Çß´Ù.
ÀÌ µÎ Àü¿ªº¯¼öÀÇ ¿ëµµ°¡ ºñ½ÁÇÑ °Í °°Áö¸¸ Á¶±Ý ´Ù¸£´Ù. g_ChildNumÀº Áõ°¨ÇÏÁö¸¸ g_NewNo´Â ¹«Á¶°Ç Áõ°¡¸¸ ÇÏ°í °¨¼Ò´Â ÇÏÁö ¾Ê´Â´Ù. Â÷Àϵ带 ¸¸µé°í ´Ý±â¸¦ ¹Ýº¹ÇÒ ¶§ ÀÌ µÎ °ªÀÌ ¾î¶»°Ô º¯ÇÏ´ÂÁö º¸ÀÚ.
|
g_NewNo |
g_ChildNum |
ÃʱⰪ |
0 |
0 |
À̸§¾øÀ½ 1 »ý¼º |
1 |
1 |
À̸§¾øÀ½ 2 »ý¼º |
2 |
2 |
À̸§¾øÀ½ 3 »ý¼º |
3 |
3 |
À̸§¾øÀ½ 2 ´ÝÀ½ |
3 |
2 |
À̸§¾øÀ½ 4 »ý¼º |
4 |
3 |
¾ð¶æ º¸±â¿¡ g_ChildNumÀÌ g_NewNoÀÇ ¿ªÇÒÀ» ´ë½ÅÇÒ ¼ö ÀÖ´Â °Í °°¾Æ º¸ÀδÙ. ÇÏÁö¸¸ Áß°£¿¡ Â÷Àϵ带 ´ÝÀ» ¼öµµ Àֱ⠶§¹®¿¡ ±×·¸Áö°¡ ¸øÇÏ´Ù. 1,2,3±îÁö ¸¸µç ÈÄ 2¸¦ ´Ý°í ´Ù½Ã Â÷Àϵ带 Çϳª ´õ ¸¸µé¾úÀ» ¶§ ÀÌ °ªÀº 4°¡ µÇ¾î¾ßÁö 3ÀÌ µÇ¾î¼´Â ¾ÈµÇ±â ¶§¹®ÀÌ´Ù. ±×·¡¼ µÎ º¯¼ö°¡ ¸ðµÎ ÇÊ¿äÇÏ´Ù.
»õ·Î¿î Â÷Àϵå À©µµ¿ì¸¦ ¸¸µå´Â ÀÛ¾÷Àº New ÇÔ¼ö°¡ ÇÑ´Ù. ÀÌ ÇÔ¼ö°¡ MDI Â÷Àϵ带 ¸¸µå´Â ¹æ¹ýÀº ¿ø·ÐÀûÀÌ´Ù. MDICREATESTRUCT ±¸Á¶Ã¼¿¡ »ý¼ºÇÏ°íÀÚ ÇÏ´Â Â÷Àϵ忡 ´ëÇÑ Á¤º¸¸¦ ä¿ì°í MDI Ŭ¶óÀ̾ðÆ® À©µµ¿ì·Î WM_MDICREATE ¸Þ½ÃÁö¸¦ º¸³»´Â °ÍÀÌ´Ù. ÀÌ ¸Þ½ÃÁö ´ë½Å CreateMDIWindow ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
Â÷Àϵ带 »ý¼ºÇϴµ¥ º° Ưº°ÇÑ ÄÚµå´Â ¾øÁö¸¸ »ý¼ºµÇ´Â Â÷ÀϵåÀÇ Å©±â¸¦ Á¤ÇÏ´Â ¹æ¹ýÀÌ Á¶±Ý ƯÀÌÇÏ´Ù. Â÷Àϵ带 ¸¸µé±â Àü¿¡ WM_MDIGETACTIVE ¸Þ½ÃÁö¸¦ º¸³» ÇöÀç È°¼ºÈµÈ Â÷Àϵ尡 ÀÖ´ÂÁö, ±×¸®°í ±× âÀÌ ÃÖ´ëÈµÈ »óÅÂÀÎÁö¸¦ Á¶»çÇÑ´Ù. ¸¸¾à È°¼º Â÷Àϵ尡 ¾ø°Å³ª ÀÖ´õ¶óµµ ÃÖ´ëȵǾî ÀÖÀ¸¸é »õ·Î ¸¸µé¾îÁö´Â Â÷Àϵ嵵 °°ÀÌ ÃÖ´ëȵȴÙ. È°¼º Â÷Àϵ尡 ¾ø´Ù´Â ¸»Àº ¾Æ¹« °Íµµ ÆíÁýÇÏ°í ÀÖÁö ¾ÊÀº ºó »óŶó´Â ¶æÀε¥ À̶§ »ý¼ºµÇ´Â Â÷Àϵå´Â È¥ÀÚÀ̹ǷΠÃÖ´ëÈÇÏ¿© ÀÛ¾÷¿µ¿ª Àüü¸¦ ´Ù ¾µ ¼ö ÀÖµµ·Ï Çß´Ù.
New ÇÔ¼ö´Â ÆÄÀÏ/»õ ÆÄÀÏ(IDM_FILE_NEW) Ç׸ñÀ» ¼±ÅÃÇÒ ¶§ È£ÃâµÈ´Ù. »õ ÆÄÀÏÀ» ¸¸µé¶ó´Â ¸í·ÉÀ̹ǷΠÀÌ ÇÔ¼ö°¡ È£ÃâµÇ´Â °ÍÀÌ ´ç¿¬ÇÏ´Ù. ±× ¿Ü¿¡ New ÇÔ¼ö°¡ È£ÃâµÇ´Â °÷ÀÌ ÇÑ ±ºµ¥ ´õ Àִµ¥ ¸ÞÀÎ À©µµ¿ì°¡ óÀ½ ¸¸µé¾îÁú ¶§ÀÌ´Ù. ÆíÁý±â¸¦ ½ÇÇàÇß´Ù´Â °ÍÀº ÆÄÀÏÀ» ¸¸µé°Ú´Ù´Â ¶æÀ̹ǷΠ½ÃÀÛÇÒ ¶§ ¾Æ¿¹ »õ ¹®¼¸¦ Çϳª ¸¸µå´Â °ÍÀÌ´Ù. ¸¸¾à ±×³É ºó »óÅ·Π½ÇÇàµÇµµ·Ï ÇÑ´Ù¸é ½ÇÇà Á÷ÈÄ¿¡ Ç×»ó ÆÄÀÏ/»õ ÆÄÀÏÀ» ¼±ÅÃÇØ¾ß ÇϹǷΠ¾²±â ºÒÆíÇÒ °ÍÀÌ°í ¶Ç °³¹ßÁß¿¡µµ Å×½ºÆ®ÇϱⰡ ¿©°£ ÇÇ°ïÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ±×·¡¼ ½ÇÇàÇÏÀÚ¸¶ÀÚ New ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Â÷Àϵå Çϳª¸¦ ¸¸µéµµ·Ï ÇÏ¿´´Ù.
ÀÌ·± ¸ñÀûÀ̶ó¸é ¸ÞÀÎ À©µµ¿ì°¡ »ý¼ºµÇ´Â ½ÃÁ¡ÀÎ OnCreate¿¡¼ New ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÉ °Í °°´Ù. ±×·¯³ª ÀÌ ¿¹Á¦´Â ±×·¸°Ô ÇÏÁö ¾Ê¾Ò°í OnCreate¿¡¼´Â ŸÀ̸Ӹ¸ ¼³Ä¡ÇÏ°í OnTimer¿¡¼ New ÇÔ¼ö¸¦ È£ÃâÇÏ¿´´Ù. ÀÌ Å¸À̸Ӵ ¹ß»ý Á÷ÈÄ¿¡ °ð¹Ù·Î Æı«µÇ´Â ÀÏȸ¿ë ŸÀ̸ÓÀÌ´Ù. ¿Ö ±»ÀÌ Å¸À̸Ӹ¦ »ç¿ëÇϴ°¡ Çϸé ÃʱâÈ°¡ ¿ÏÀüÈ÷ ¿Ï·áµÈ ÈÄ¿¡ Â÷Àϵ带 ¸¸µé±â À§ÇؼÀÌ´Ù. OnCreate´Â ºÎ¸ð À©µµ¿ì°¡ ¸¸µé¾îÁö°í ÀÖ´Â ÁßÀÎ »óÅÂÀ̹ǷΠNew ÇÔ¼ö¸¦ È£ÃâÇϱâ´Â ºÎÀû´çÇÏ¸ç ¸¸¾à OnCreate¿¡¼ New ÇÔ¼ö¸¦ È£ÃâÇϸé MDI Ŭ¶óÀ̾ðÆ®ÀÇ Å©±â°¡ °áÁ¤µÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ Å©±â 0ÀÇ Â÷Àϵ尡 ¸¸µé¾îÁø´Ù. New ÇÔ¼ö¿¡ ÀÇÇØ Â÷Àϵå´Â ÃÖ´ëÈ »óÅ·Π¸¸µé¾îÁöÁö¸¸ ÃÖ´ëÈ°¡ Ç®¸®¸é ¾ÆÁÖ ÀÛÀº Å©±â°¡ µÇ¾î ¹ö¸°´Ù.
µü ÇÑ ¹ø¸¸ ÇÏ¸é µÉ ÀÏÀ» À§ÇØ Å¸À̸Ӹ¦ »ç¿ëÇÏ´Â ¹æ½ÄÀÌ ¹«Ã´ ¸¶À½¿¡ ¾È µé¾î º¸ÀÏ °ÍÀÌ¸ç »ç½Ç ³ªµµ º°·Î ¸¶À½¿¡ ¾È µç´Ù. ¹®Á¦´Â WM_CREATE°¡ ÃʱâÈ ¿Ï·á ¸Þ½ÃÁö°¡ ¾Æ´Ï¶ó ÃʱâÈÁßÀ̶ó´Â ¸Þ½ÃÁöÀ̱⠶§¹®Àε¥ ±×·¸´Ù¸é ÃʱâÈ°¡ ¿ÏÀüÈ÷ ¿Ï·áµÈ ÈÄ¿¡ ¹Þ´Â ¸Þ½ÃÁö¿¡¼ New ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÉ °Í ¾Æ´Ñ°¡ÇÏ´Â »ý°¢ÀÌ µé °ÍÀÌ´Ù. ±×·¯³ª ºÒÇàÇÏ°Ôµµ ±×·± ¸Þ½ÃÁö´Â ¾øÀ¸¸ç ÀÖÀ» ¼öµµ ¾ø´Ù. ¿Ö³ÄÇÏ¸é ¸Þ½ÃÁö¸¦ ó¸®ÇÏ°í ÀÖ´Â ÁßÀ̶ó´Â ÀÚü°¡ ÀÌ¹Ì ÃʱâÈ°¡ ¾ÆÁ÷ ´ú µÇ¾ú´Ù´Â ¶æÀ̱⠶§¹®ÀÌ´Ù.
±×·¡¼ ŸÀ̸Ӹ¦ ¼³Ä¡ÇÏ°í ÀÌ ¸Þ½ÃÁö°¡ ÃÖÃÊ·Î ¹ß»ýµÇ´Â ½ÃÁ¡À» ÃʱâÈ ¿Ï·á ½ÃÁ¡À¸·Î Á¤ÀÇÇÏ¿´´Ù. Áï ÀÏȸ¿ë ŸÀÌ¸Ó ¸Þ½ÃÁö¸¦ ÃʱâÈ ¿Ï·á ¸Þ½ÃÁö·Î ¸¸µé¾î ¾²´Â °ÍÀÌ´Ù. SetTimer¹®ÀÇ 1À̶ó´Â ŸÀÌ¸Ó ÁÖ±â´Â »ç½Ç»ó Àǹ̰¡ ¾ø´Â °ªÀ̸ç 0.001ÃÊ Èĸ¦ ¶æÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±×³É ´Ü¼øÈ÷ ¡®ÃÖ´ëÇÑ »¡¸®¡¯¶ó´Â ¶æÀÌ´Ù. WM_TIMER´Â WM_PAINT ´ÙÀ½À¸·Î ¿ì¼± ¼øÀ§°¡ ´ÊÀº ¸Þ½ÃÁöÀÌ¸ç ¸Þ½ÃÁö Å¥°¡ ºñ´Â ÃÖÃÊÀÇ ¼ø°£¿¡ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¹Ç·Î ÃʱâÈ ¿Ï·á ¸Þ½ÃÁö·Î ¾²±â¿¡ ÀûÀýÇÏ´Ù.
±×·¡µµ ŸÀ̸Ӹ¦ ¾²´Â ¹æ½ÄÀÌ Á¤ ¸¶À½¿¡ µéÁö ¾Ê´Â´Ù¸é ¿øÄ¢À» Á» µûÁ® º¸µµ·Ï ÇÏÀÚ. ¿ø·¡ ¿øÄ¢´ë·Î ÇÏÀÚ¸é ÃʱâÈ°¡ ¿Ï·áµÇ´Â ½ÃÁ¡Àº WinMainÀÇ CreateWindow°¡ ¸®ÅÏÇÏ´Â ½ÃÁ¡ÀÌ´Ù. ±×·¡¼ New ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ È£ÃâÇÏ¸é µ¿ÀÏÇÑ ±â´ÉÀ» ¿Ïº®ÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
....
hWnd=CreateWindow(lpszClass,"´ç±Ù",WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
New();
ÇÏÁö¸¸ WinMain¿¡ ¸ÞÀÎ À©µµ¿ì ÃʱâÈ °ü·Ã Äڵ带 ÀÛ¼ºÇÑ´Ù´Â °Íµµ ŸÀ̸Ӹ¦ ¾²´Â °Í¿¡ ºñÇØ ±×´ÙÁö ÁÁÀº ¹æ¹ýÀ̶ó°í´Â ÇÒ ¼ö ¾ø´Ù. Á» º¸±â¿¡ ¾È ÁÁ¾Æ º¸¿©µµ ±× À©µµ¿ì¿Í °ü·ÃµÈ ÄÚµå´Â ¸Þ½ÃÁö ÇÁ·Î½ÃÀú ³»¿¡¼ ó¸®ÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù. ÇÁ·ÎÁ§Æ®°¡ ÁøÇàµÇ¸é ÃʱâÈ ¿Ï·á ½ÃÁ¡¿¡¼ ÇØ¾ß ÇÒ ÀÏÀÌ ¸¹¾ÆÁö´Âµ¥ ÀÌ·± ´ë·®ÀÇ Äڵ带 WinMain¿¡ µÎ´Â °ÍÀº ±×´ÙÁö ÁÁÀº »ý°¢ÀÌ ¾Æ´Ï´Ù.