³ª. ¿©ºÐ ¸Þ¸ð¸®

MDI´Â °°Àº Á¾·ùÀÇ ¹®¼­¸¦ ÆíÁýÇÏ´Â ¿©·¯ °³ÀÇ Â÷Àϵå À©µµ¿ì°¡ µ¿½Ã¿¡ ¿­¸± ¼ö ÀÖ´Â ±¸Á¶Àε¥ À̶§ °¢ Â÷Àϵå´Â °°Àº À©µµ¿ì Ŭ·¡½º·ÎºÎÅÍ ¸¸µé¾îÁö°í À©µµ¿ì ÇÁ·Î½ÃÀúµµ °øÀ¯ÇϹǷΠ¸ð¾ç°ú µ¿ÀÛÀÌ °°À» ¼ö¹Û¿¡ ¾ø´Ù. °¢ Â÷Àϵå´Â °øÅëÁ¡ÀÌ ´õ ¸¹Áö¸¸ ±×·¡µµ ¼­·Î ±¸ºÐµÇ´Â °íÀ¯ÇÑ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù. ÆíÁýÇÏ´Â ¹®¼­°¡ ´Ù¸£°í ¼³Á¤»óŵµ °³º°ÀûÀ¸·Î ¹Ù²ð ¼ö ÀÖ´Ù.

Â÷Àϵ庰·Î °íÀ¯ÇÑ ÀÌ·± Á¤º¸µéÀº Àü¿ªº¯¼ö¿¡ ÀúÀåÇÒ ¼ö ¾øÀ¸¸ç °¢ Â÷Àϵ尡 °³º°ÀûÀ¸·Î °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ¿µ¿ªÀº ¿©ºÐ ¸Þ¸ð¸®¿Í À©µµ¿ì ÇÁ·ÎÆÛƼ µÎ °¡Áö°¡ ÀÖ´Ù. ¿©ºÐ ¸Þ¸ð¸®´Â 16ºñÆ® ½ÃÀýºÎÅÍ »ç¿ëµÇ¾ú´ø Á» ¿À·¡µÈ ¹æ¹ýÀÌ°í À©µµ¿ì ÇÁ·ÎÆÛƼ´Â 32ºñÆ® À©µµ¿ì¿¡¼­ ±ÇÀåµÇ´Â ¹æ¹ýÀ̳ª µÎ ¹æ¹ý ¸ðµÎ ´ëü¼ºÀÌ ÀÖÀ¸¹Ç·Î ¾î¶² °ÍÀ» »ç¿ëÇϵçÁö Å« Â÷ÀÌ´Â ¾ø´Ù. ¿©±â¼­´Â ¿©ºÐ ¸Þ¸ð¸®¸¦ »ç¿ëÇϴµ¥ Â÷ÀϵåÀÇ À©µµ¿ì Ŭ·¡½º Á¤Àǹ®À» º¸¸é ´ÙÀ½°ú °°Àº ´ëÀÔ¹®ÀÌ ÀÖ´Ù.

 

WndClassEx.cbWndExtra=sizeof(DWORD);

 

¿©ºÐ ¸Þ¸ð¸®¿¡ 4¹ÙÀÌÆ®¸¦ ÇÒ´çÇ϶ó´Â ¶æÀ̸ç ÀÌ ¿µ¿ª¿¡ Â÷Àϵ庰·Î °íÀ¯ÇÑ Á¤º¸¸¦ ±â¾ï½ÃŲ´Ù. Á» ´õ Å« ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© ÇÊ¿äÇÑ Á¤º¸¸¦ Á÷Á¢ ³ÖÀ» ¼öµµ ÀÖÁö¸¸ È®Àå¿¡ ºÒ¸®Çϱ⠶§¹®¿¡ º¸ÅëÀº 4¹ÙÀÌÆ®¸¸ ÇÒ´çÇÏ°í ÇÊ¿äÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ±¸Á¶Ã¼¸¦ ¼±¾ðÇÑ ÈÄ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¿©ºÐ ¸Þ¸ð¸®¿¡ ±â¾ï½ÃÅ°´Â ¹æ¹ýÀ» ¸¹ÀÌ »ç¿ëÇÑ´Ù. ¿©±â¼­´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ SInfo ±¸Á¶Ã¼¸¦ Â÷ÀϵåÀÇ °íÀ¯ Á¤º¸ ÀúÀåÀ» À§ÇØ »ç¿ëÇÑ´Ù.

 

struct SInfo

{

     CApiEdit Ae;

     TCHAR NowFile[MAX_PATH];

};

 

µÎ °³ÀÇ ¸â¹ö¸¦ °¡Áö´Âµ¥ Ae´Â ÀÌ Â÷Àϵ尡 ÅؽºÆ® ÆíÁý¿¡ »ç¿ëÇÒ ApiEdit ÄÁÆ®·Ñ °´Ã¼À̸ç NowFileÀº Áö±Ý ÆíÁýÇÏ°í ÀÖ´Â ÆÄÀÏÀÇ °æ·ÎÀÌ´Ù. ÀÌ ±¸Á¶Ã¼´Â DGChildProc¿¡¼­ Â÷Àϵ尡 »ý¼ºµÉ ¶§ÀÎ WM_CREATE ¸Þ½ÃÁö¿¡¼­ ÇÒ´çµÈ´Ù. new ¿¬»êÀÚ·Î SInfo ±¸Á¶Ã¼¸¦ ÇÒ´çÇϴµ¥ À̶§ Ae ÄÁÆ®·ÑÀÇ »ý¼ºÀÚ°¡ È£ÃâµÇ¾î ÇÊ¿äÇÑ ÃʱâÈ­¸¦ ÇÑ´Ù. ±¸Á¶Ã¼¿¡ Æ÷ÇÔµÈ °´Ã¼¸¦ »ý¼ºÇØ¾ß Çϱ⠶§¹®¿¡ ¹Ýµå½Ã new ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß Çϸç mallocÀ¸·Î ¸Þ¸ð¸®¸¸ ÇÒ´çÇؼ­´Â ¾ÈµÈ´Ù. SInfo ±¸Á¶Ã¼¸¦ ¸¸µéÀÚ ¸¶ÀÚ SetWindowLong ÇÔ¼ö·Î ÀÌ ±¸Á¶Ã¼ÀÇ ¹øÁö¸¦ ¿©ºÐ ¸Þ¸ð¸®ÀÇ 0¹ø ¿ÀÇÁ¼Â¿¡ ÀúÀå½ÃÄ×´Ù. ÀÌÁ¦ ÀÌ ±¸Á¶Ã¼°¡ ÇÊ¿äÇÏ¸é ¾ðÁ¦µçÁö GetWindowLongÀ¸·Î ±¸ÇÒ ¼ö ÀÖ´Ù.

±¸Á¶Ã¼ ÇÒ´ç ÈÄ Ae°´Ã¼ÀÇ Create ÇÔ¼ö¸¦ È£ÃâÇÏ¿© °´Ã¼¸¦ »ý¼ºÇÑ´Ù. À̶§ CApiEdit::OnCreate°¡ È£ÃâµÇ¸ç ÄÁÆ®·ÑÀº ½ÇÁúÀûÀÎ ÃʱâÈ­¸¦ ÇÒ ±âȸ¸¦ °¡Áö°Ô µÈ´Ù. NowFile¿¡´Â ¡®À̸§¾øÀ½¡¯À̶ó´Â Ãʱâ ÆÄÀϸíÀ» ´ëÀÔÇÏ¿© ¾ÆÁ÷ ÀúÀåµÇÁö ¾ÊÀº ¹®¼­ÀÓÀ» Ç¥½ÃÇÏ¿´´Ù. WM_SIZE¿¡¼­´Â Â÷ÀϵåÀÇ ÀÛ¾÷¿µ¿ª Àüü¸¦ ApiEdit ÄÁÆ®·Ñ·Î °¡µæ ä¿ì¸ç WM_SETFOCUS¿¡¼­´Â Â÷Àϵ尡 Æ÷Ä¿½º¸¦ ¹ÞÀÚ ¸¶ÀÚ ApiEdit ÄÁÆ®·Ñ¿¡°Ô Æ÷Ä¿½º¸¦ ´Ù½Ã ³Ñ±ä´Ù. ÀÌ ¸Þ½ÃÁö¿¡¼­ ÀÌ·± 󸮸¦ ÇÏ·Á¸é Â÷Àϵå´Â ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â ApiEdit °´Ã¼¸¦ ãÀ» ¼ö ÀÖ¾î¾ß Çϴµ¥ ±× Àå¼Ò°¡ ¹Ù·Î ¿©ºÐ ¸Þ¸ð¸®ÀÌ´Ù. ¿©ºÐ ¸Þ¸ð¸®¿¡ ÀúÀåµÈ SInfo ±¸Á¶Ã¼ Æ÷ÀÎÅÍ´Â GetWindowLong ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ±¸ÇÒ ¼ö ÀÖÀ¸¸ç Æ÷ÀÎÅ͸¦ ±¸Çϸé ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öÀÎ Ae°´Ã¼¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.

Â÷Àϵ尡 Æı«µÉ ¶§ÀÎ WM_DESTROY¿¡¼­´Â ÇÒ´çµÈ SInfo ±¸Á¶Ã¼¸¦ Á¦°ÅÇÑ´Ù. new ¿¬»êÀÚ·Î ±¸Á¶Ã¼¸¦ ÇÒ´çÇßÀ¸¹Ç·Î Á¦°ÅÇÒ ¶§µµ delete ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ±¸Á¶Ã¼°¡ Æı«µÇ¸é ±× ¸â¹öÀÎ ApiEdit °´Ã¼µµ Æı«µÇ¸ç À̶§ OnDestroy¿Í Æı«ÀÚ°¡ È£ÃâµÇ¾î ÇÊ¿äÇÑ µÞÁ¤¸®¸¦ ÇÏ°Ô µÈ´Ù.