<µ¿ÀûÀ¸·Î ÄÁÆ®·Ñ Å©±â º¯°æÇϱâ>

     CRect rect;
     m_Btn.GetWindowRect(rect);

     int x,y,cx,cy;
     
     x = rect.left;
     y = rect.top;
     cx = (rect.right-rect.left) + 30;
     cy = (rect.bottom-rect.top) + 30;

     m_Btn.MoveWindow(x,y,cx,cy,TRUE); // m_BtnÀº ¹öÆ° º¯¼ö.

À§´Â ¹öÆ° ÄÁÆ®·Ñ¿¡ ´ëÇؼ­ Çߴµ¥ ´Ù¸¥ ÄÁÆ®·Ñµµ À§Ã³·³ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù.

 

<¸±¸®Áî ¸ðµå¿¡¼­ ºê·¹ÀÌÅ© Æ÷ÀÎÆ® »ç¿ëÇϱâ>

- ¿ä¾à

 ¾îÇø®ÄÉÀ̼ÇÀ» ¸±¸®Áî ¸ðµå·Î Build ÇÒ ¶§ µð¹ö±ë Á¤º¸¸¦ ³²±â¾î¼­ VC++ Debugging Tool¿¡¼­ µð¹ö±ëÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ´Â °æ¿ì, ½ÇÁ¦ ¸±¸®Áî ½ÇÇà ÆÄÀÏÀº °ÅÀÇ ¿µÇâÀ» ¹ÞÁö ¾ÊÀ¸¸é¼­, µð¹ö±×¿¡¼­ ºê·¹ÀÌÅ© Æ÷ÀÎÅ͸¦ Àâ°Å³ª, Trace¸¦ °¡´ÉÇÏ°Ô ÇϹǷÎ, ¸±¸®Áî¸ðµå ¿¡¼­¸¸ ¹ß»ýÇÏ´Â ¹ö±×¸¦ ÀâÀ»¼ö ÀÖ½À´Ï´Ù.

- Ãß°¡Á¤º¸

 ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ°Ô µÇ¸é _DEBUG free defineÀ¸·Î Æ÷ÇԵǴ µð¹ö±ë ¸ÞÅ©·Î´Â Æ÷ÇÔµÇÁö ¾ÊÀ¸³ª, Source code¾ÈÀ¸·Î Step in °¡´ÉÇÏ°Ô ÇÏ´Â µð¹ö±ë Á¤º¸µéÀº OBJ¿Í PDB ÆÄÀÏ¿¡ ³²°Ô µË´Ï´Ù. À̸¦ ÀÌ¿ëÇÏ°Ô µÇ¸é VC++ IDE ȯ°æ¿¡¼­ source level ±îÁöÀÇ step inÀÌ °¡´ÉÇØ Áý´Ï´Ù.

- ¹æ¹ý

1. Project¸¦ openÇÑµÚ menu 'Project/Settings'¸¦ ¼±ÅÃÇÕ´Ï´Ù.
2. 'Settings For'¸¦ 'Win32 Release'·Î ¼±ÅÃÇÕ´Ï´Ù.
3. 'C/C++' tab¿¡¼­ 'category'¸¦ 'General'·Î ¼±ÅÃÇÏ°í 'Program Database'·Î ¼±ÅÃÇÕ´Ï´Ù.
4. 'Link' tab¿¡¼­ 'category'¸¦ General'·Î ¼±ÅÃÇÏ°í 'Generate debug info'¸¦ üũÇÕ´Ï´Ù.
5. 'Rebuild All'¸¦ ½ÇÇàÇÏ¿©¼­ ÇÁ·Î±×·¥À» ´Ù½Ã ºôµå ÇÕ´Ï´Ù.

ÀÌÁ¦ µð¹ö±ë ÇÏ°íÀÚ ÇÏ´Â À§Ä¡¿¡ ºê·¹ÀÌÅ©Æ÷ÀÎÅ͸¦ Àâ°í 'Go'¸¦ ½ÇÇàÇϸé, µð¹ö±ëÀ» ÁøÇàÇÒ¼ö ÀÖ½À´Ï´Ù.

 

<byte alignment>

º¸Åë VC++¿¡¼­

 sizeof(A) == 5, sizeof(B) == 8 ÀÌ µË´Ï´Ù. int¿Í charÀÇ ¼ø¼­¸¦ ¹Ù²ãµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

 sizeof(B)ÀÇ °ªÀÌ 5 °¡ ¾Æ´Ï¶ó 8ÀÌ µÇ´Â ÀÌÀ¯´Â ¹ÙÀÌÆ® Á¤·Ä(byte alignment)À̶ó´Â ¹®Á¦ ¶§¹®Àε¥, ¹°·Ð ÄÄÆÄÀÏ·¯ ¿É¼Ç¿¡ º¸¸é 8¹ÙÀÌÆ® Á¤·Ä, 4¹ÙÀÌÆ®Á¤·Ä... 1¹ÙÀÌÆ® Á¤·ÄÀÌ ÀÖ½À´Ï´Ù. µðÆúÆ®´Â 8¹ÙÀÌÆ® Á¤·ÄÀÌÁÒ. (À§ÀÇ ¿¹Á¦´Â ¹ÙÀÌÆ® Á¤·ÄÀÇ ´ÜÀ§¸¦ µðÆúÆ®ÀÎ 8·Î ÇßÀ» ¶§ÀÔ´Ï´Ù)

¿Ö ÀÌ·¸°Ô Çϳĸé (¿©·¯°¡Áö ÀÌÀ¯°¡ ÀÖ°ÚÁö¸¸) ¸Þ¸ð¸®¸¦ ÀÏÁ¤ ¹ÙÀÌÆ® ´ÜÀ§·Î ó¸®ÇÏ´Â°Ô ºü¸£±â ¶§¹®ÀÔ´Ï´Ù.

ÇÏÁö¸¸ °¡²û¾¿ ±î¸ÔÀ¸¸é Á¤¸» Ä¡¸íÀûÀÎ ¿À·ù¸¦ ¸ÂÀÌÇÏ°Ô µÇÁÒ. ÆÄÀÏ Ã³¸®³ª, Åë½Å °°Àº °÷¿¡¼­´Â Àå³­ ¾Æ´ÏÁÒ. ÀÌ·± °æ¿ì #pragma¸¦ »ç¿ëÇϼ¼¿ä. 

#pragma pack( push, my_data_definition, 1 )
// ÀÌÁ¦ºÎÅÍ Á¤ÀÇÇÏ´Â ¸ðµç µ¥ÀÌÅÍ Å¸ÀÔÀº 1¹ÙÀÌÆ® Á¤·Ä·Î µË´Ï´Ù.

#pragma pack( pop, my_data_definition )
// ¿©±â¼­´Â ÄÄÆÄÀÏ ¿É¼Ç¿¡¼­ ¼³Á¤ÇÑ Á¤·Ä¹æ¹ýÀÌ »ç¿ëµË´Ï´Ù.

ÀÌ·¸°Ô ÇÏ¸é ¶óÀ̺귯¸®·Î ¹èÆ÷ÇÏ´õ¶óµµ Ç×»ó Á¤È®ÇÑ ½ÇÇàÀÌ º¸ÀåµÇÁÒ. Àû¾îµµ ¹ÙÀÌÆ® Á¤·Ä¹®Á¦´Â ¾ø¾îÁöÁÒ. 

½ÇÁ¦·Î MS°¡ ¹èÆ÷ÇÏ´Â Çì´õ ÆÄÀÏ¿¡µµ »ç¿ëµÇ´Â ¹æ¹ýÀÔ´Ï´Ù.

¾ê³×µéÀº Á» ´õ °£ÆíÇÑ ¹æ¹ýÀ¸·Î ¾²°í ÀÖÁö¸¸...

 

±×·±µ¥, 8¹ÙÀÌÆ®·Î Çß´õ¶óµµ ¸â¹öÁß¿¡ °¡Àå Å« µ¥ÀÌÅÍÇüÀÌ longÀ̰ųª int¸é ±×°ÍÀÇ Å©±âÀÎ 4¹ÙÀÌÆ®·Î Á¤·ÄµË´Ï´Ù. ÀÌ°Ç ÀÌ·¸°Ô ±¸Á¶Ã¼¸¦ Á¤ÀÇÇؼ­ sizeof¸¦ ±¸Çغ¸¸é ¾Ë¼ö ÀÖ½À´Ï´Ù.

ÀÌ°Ç À¯´Ð½º¶û ¶È°°ÁÒ. Çåµ¥ 8¹ÙÀÌÆ® µ¥ÀÌÅÍÇü(double, __int64)°¡ »ç¿ëµÇ¸é VC++Àº 8¹ÙÀÌÆ®·Î Á¤·ÄÇÏ°í À¯´Ð½º »ó¿¡¼­´Â ¿©ÀüÈ÷ 32ºñÆ®(4¹ÙÀÌÆ®)·Î Á¤·ÄÇÏ´õ±º¿ä. ÀÌ°Ç ´ÙÀ½°ú °°ÀÌ Å×½ºÆ®ÇغýÀ´Ï´Ù.

 ±×·³ À¯´Ð½º´Â 32ºñÆ® OS¶ó¼­ 32ºñÆ®¾¿ ó¸®ÇÏÁö¸¸ PC´Â 64ºñÆ®¶ó¼­ 64ºñÆ®¾¿ ó¸®ÇÒ ¼ö ÀÖ´Ù´Â ¸»ÀÌ....µÇ³×¿ä.

byte alignment´Â register°¡ Çѹø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Â Å©±â·Î optimizeµÇ´Â°Å·Î ¾Ë°í Àִµ¥...

 

 ¹ÙÀÌÆ® ¾ó¶óÀÎÀ» 1·Î Çؼ­ B¸¦ ¸¸µé°í ¹è¿­À» ¼±¾ðÇÑ´Ù¸é ¾î¶² À§Ä¡ÀÇ i1ÀÇ °ªÀ» °¡Á®¿À±â À§Çؼ­´Â ¸Þ¸ð¸®¿¡ µÎ¹ø Á¢±ÙÇÏ´Â ÀÏÀÌ »ý±â°Ô µË´Ï´Ù. Çѹø¿¡ ¸Þ¸ð¸®¸¦ ó¸®ÇÏ´Â°Ç ¸Þ¸ð¸®¿¡¼­ ÀÏÁ¤ ´ÜÀ§ÀÇ ¹è¼ö¸¦ ±âÁØÀ¸·Î ÀÌ·ç¾îÁö´Âµ¥(·¹Áö½ºÅÍÀÇ Å©±â¿¡ µû¶ó °áÁ¤µÇ´Â °É°Ì´Ï´Ù. Àúµµ ¿­½ÉÈ÷ °øºÎÇÏÁø ¾Ê¾Æ¼­...-_-;) ±× ´ÜÀ§ »çÀÌ¿¡ °É¸®´Â°Ì´Ï´Ù.

(charÀÇ °æ¿ì´Â À§Ä¡¸¸ °áÁ¤µÇ¸é Ç×»ó Çѹø¿¡ °¡Á®¿Ã ¼ö ÀÖÀ¸´Ï±î char¸¸ Àִ Ŭ·¡½º¿¡´Â ¹ÙÀÌÆ® ¾ó¶óÀÎÀÌ Àǹ̰¡ ¾ø½À´Ï´Ù.)

Áï, ±¸Á¶Ã¼/Ŭ·¡½º¸¦ ¹è¿­·Î ¼±¾ðÇؼ­ ¾²½Ç °æ¿ì ¸Þ¸ð¸®¸¦ Á¶±Ý ´õ ¾²´õ¶óµµ ¼Óµµ°¡ Áß¿äÇÏ´Ù¸é ¹ÙÀÌÆ® ¾ó¶óÀÎÀ» º¯°æÇÏÁö ¾ÊÀ¸½Ã´Â°Ô ÁÁ½À´Ï´Ù. »ç½Ç º¯¼ö ¸î°³ ¼±¾ðÇϸ鼭 ¸Þ¸ð¸® Å©±â¸¦ °ÆÁ¤ÇÏÁø ¾ÊÀ¸´Ï±î¿ä. (ºñµð¿À Ä«µå¿¡¼­ 24ºñÆ®º¸´Ù 32ºñÆ® ¸ðµå°¡ ´õ ºü¸¦ ¼ö ÀÖ´Ù´Â ¾ê±â¸¦ µéÀº ÀûÀÌ Àִµ¥ °°Àº ÀÌÀ¯ÀÏ°Ì´Ï´Ù.)

¹°·Ð ¿Ã¸®½Å´ë·Î Åë½Å¿¡¼­ º¸³»°í ¹ÞÀ» ¶§ »ç¿ëÇÑ´Ù¸é ¹Ýµå½Ã pack »çÀÌÁ È®ÀÎÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù. ¼­¹öÂÊÀÌ UNIXÀÏ °æ¿ì, ±×Âʵµ È®ÀÎÇØÁÖ¼Å¾ß ÇÏ°í¿ä.

Âü°í·Î

À§Ã³·³ ÆÐŶÁ¤º¸¸¦ ó¸®ÇÏ°Ô µÇ¸é ...ÁÁÀºÁ¡ÀÌ ¹«¾ó±î¿ä? ¸Þ¸ð¸® ¼ø¼­°¡ ¸Â°Ô byte alignment°¡ µÇ´Â°ÅÁÒ.

°Å±â´Ù°¡..Ãß°¡ÀûÀÎ µ¥ÀÌÅ͸¦ cbData°¡ °è¼Ó ÇÒ´ç¹ÞÀ» ¼ö ÀÖ°Ô µÇ´Â°ÅÁÒ..vtabe ÂÊ ÀÌÇØ°¡ µÇ½Å´Ù¸é ´õ ½±°Ô ÀÌÇØÇÏ½Ç °Ì´Ï´Ù.

 

<ÄÁÆ®·Ñ¹Ù(Åø¹Ù, ´ÙÀ̾ó·Î±×¹Ù) º¸À̱â/¼û±â±â>

Åø¹Ù³ª ´ÙÀ̾ó·Î±× ¹Ù¸¦ Æ÷ÇÔÇÑ ÄÁÆ®·Ñ¹Ù¸¦ ¸Þ´º¸¦ »ç¿ëÇؼ­ º¸À̱â, ¼û±â±â¸¦ ÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ ÇÏ´Â°Ô °¡Àå ÆíÇÑ °Í °°½À´Ï´Ù.

¾î¶² ÄÁÆ®·Ñ ¹Ù¸¦ m_wndBar ¶ó´Â À̸§À¸·Î ¸¸µé¾ú´Ù°í ÇսôÙ.

CMainFrame::OnCreate¿¡¼­ Create¸¦ ÇÏ°ÚÁÒ?

±×¸®°í ±×°É º¸ÀÌ°í ¼û±â´Â ¸Þ´º°¡ ÀÖ°ÚÁÒ?

±× ¸Þ´ºÀÇ ¾ÆÀ̵𸦠ID_VIEW_BAR ¶ó°í ÇսôÙ.

±×·¯¸é m_wndBar.Create(... , ID_VIEW_BAR); ÀÌ·¸°Ô ¸¸µì´Ï´Ù.

Áï ¸Þ´ºÀÇ ¾ÆÀ̵𰡠childÀÇ ¾ÆÀ̵𰡠µÇ°Ô Çϴ°ÅÁÒ.

´Ù¸¥ Â÷Àϵå ÄÁÆ®·ÑÀÇ ¾ÆÀ̵ð¿Í °ãÄ¡Áö ¾Êµµ·Ï ÁÖÀÇÇϼ¼¿ä.

±×¸®°í CMainFrameÀÇ ¸Þ½ÃÁö ¸Ê¿¡¼­

ON_COMMAND_EX(ID_VIEW_BAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_BAR, OnUpdateControlBarMenu)

ÀÌ·¸°Ô µÎÁÙÀ» ³Ö¾îÁÝ´Ï´Ù. ±×·³ ³¡ÀÌ¿¡¿ä.

OnBarCheckÀ̳ª OnUpdateControlBarMenu´Â CFrameWndÀÇ ÇÔ¼öÀε¥, ³Ñ¾î¿Â ÀÎÀÚ¸¦ °¡Áö°í ±× ¾ÆÀ̵𿡠ÇØ´çÇÏ´Â control bar¸¦ ã¾Æ¼­ ¾Ë¾Æ¼­ º¸ÀÌ°í ¼û±â°Å³ª, »óŸ¦ ¾÷µ¥ÀÌÆ® ÇØÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù.

ÇÊ¿äÇÏ´Ù¸é Á÷Á¢ ¼Ò½º¸¦ ã¾Æ¼­ º¹»çÇؿͼ­ ¿øÇϴ´ë·Î °íÃļ­ ½áµµ µÇ°ÚÁÒ.

  

<ÄÜÆ®·ÑÀÇ »çÀÌÁ À§Ä¡ º¯°æ½Ã ±ô¹ÚÀÓ Çö»ó ÁÙÀ̱â>

ÄÜÆ®·ÑµéÀÇ À§Ä¡³ª Å©±â¸¦ º¯°æÇÏ°íÀÚ ÇÒ ¶§ Åë»ó SetWindowPos()³ª MoveWindow() ÇÔ¼ö¸¦ ÀÌ¿ëÇÕ´Ï´Ù. 

±×·±µ¥ ÀÌ ÇÔ¼öµéÀº °¢°¢ÀÇ ÄÜÆ®·ÑµéÀÌ °³º°ÀûÀ¸·Î ±×·ÁÁö±â ¶§¹®¿¡ È­¸é ±ô¹ÚÀÓÀÌ ½ÉÇÕ´Ï´Ù.

ƯÈ÷, FormView³ª Dialog¸¦ »ç¿ëÇÏ¸é ´õ ½ÉÇÏÁö¿ä. 

ÀÌ·²¶§ BeginDeferWindowPos(), DeferWindowPos(), EndDeferWindowPos()¶ó´Â Window API ÇÔ¼ö¸¦ ½áº¸¼¼¿ä. ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº Help¸¦ º¸½Ã¸é µÇÁö¸¸ °£´ÜÈ÷ ¿ä¾àÇϸé 

HDWP hdwp = ::BeginDeferWindowPos (2);

::DeferWindowPos (hdwp, ctrl1.GetSafeHwnd (), HWND_TOP,
                Rect1.left, Rect1.top, Rect1.Width (), Rect1.Height (),
                SWP_NOZORDER | SWP_SHOWWINDOW);                                

::DeferWindowPos (hdwp, ctrl2.GetSafeHwnd (), HWND_TOP,
                Rect2.left, Rect2.top, Rect2.Width (), Rect2.Height (),
                SWP_NOZORDER | SWP_SHOWWINDOW);

::EndDeferWindowPos (hdwp);

ÀÌ·¯¸é °¢ ÄÜÆ®·ÑÀÇ À§Ä¡¿Í Å©±â°¡ °áÁ¤µÈÈÄ, ÇѲ¨¹ø¿¡ °»½ÅµÇ±â ¶§¹®¿¡ È­¸é ±ô¹ÚÀÓÀÌ ÈξÀ ÁÙ¾îµì´Ï´Ù.

========

Á¦°¡ Áñ°Ü »ç¿ëÇÏ´Â ¹æ¹ýÀº FormView¿¡´Ù°¡ ´ÙÀ̾ó·Î±× ¸®¼Ò½º »ç¿ëÇؼ­ ¸ð¾çÀ» ÆíÁýÇÏ°í ±×°É ¸®»çÀÌ¡½Ã¿¡ ÄÁÆ®·Ñ À§Ä¡¸¦ º¯°æ½ÃÄÑÁÖ´Â ¹æ¹ýÀÌÁÒ.

ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ¸é ¸®¼Ò½º ÆíÁýÀ¸·Î Çϱ⠶§¹®¿¡ ¼Ò½º¿¡¼­ µ¿ÀûÀ¸·Î »ý¼º½ÃÅ°´À¶ó ¼Ò½º°¡ ±æ¾îÁö´Â ÀÏÀÌ ¾ø°í maintenanceµµ ½¬¿ï »Ó ¾Æ´Ï¶ó, ´ÙÀ̾ó·Î±× ¹Ú½º ó¸®¿Í À¯»çÇϱ⠶§¹®¿¡ ¼Ò½º º¯°æÀÌ ½±°Åµç¿ä.

È­¸é ±ô¹ÚÀÓÀ» ¾ø¾Ö´Â ¹æ¹ýÀº ¿©·¯ °÷À» µÚÁ® ºÃ½À´Ï´Ù.

ÄÚµå ±¸·çµµ ã¾Æ ºÃ°í ÀÌ°÷Àú°÷ ã¾Æº» °á°ú, °¡Àå °£´ÜÇϸ鼭µµ °­·ÂÇÑ ¹æ¹ýÀº WS_CLIPCHILDRENÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´õ±º¿ä.

´ÙÀ̾ó·Î±× ¸®¼Ò½ºÀÇ ÇÁ·ÎÆÛƼ¿¡¼­ WS_CLIPCHILDRENÀ̶ó´Â style¸¸ Ãß°¡ÇØÁÖ½Ã¸é ´ëºÎºÐÀÇ ÄÁÆ®·ÑµéÀÌ ±ô¹Ú°Å¸®Áö ¾ÊÀ¸¸é¼­ ¸®»çÀÌ¡ µË´Ï´Ù.

 

<Ç÷ÎÇǵð½ºÄÏ Æ÷¸Ë ´ÙÀÌ¾Ë·Î±× È£ÃâÇϱâ>

Ç÷ÎÇÇƼ½ºÄÏÀ» Æ÷¸ËÇÏ´Â ±â´ÉÀ» ÇÁ·Î±×·¥¾È¿¡ ³ÖÀº ÀÏÀº ±×¸® ÈçÇÑÀÏÀº ¾Æ´ÏÁö¸¸ ¸·»ó ÀÌ ±â´ÉÀÌ ÇÊ¿äÇÒ¶§´Â ¾î¶»°Ô ±¸ÇöÇÒÁö Á» ¸·¸·ÇÏ°ÚÁÒ?

DeviceIoControl()À̶õ ÇÔ¼ö·Î µð½ºÅ©µå¶óÀ̹öÀÇ ±â´ÉÀ» È£ÃâÇÒ ¼öµµ ÀÖÁö¸¸ ´©±¸³ª ½±°Ô ¾µ¼ö ÀÖÀ» Á¤µµ·Î ½¬¿î ÇÔ¼ö´Â ¾Æ´Ï±â ¶§¹®¿¡ Á» ´õ ½¬¿î ¹æ¹ýÀ» ãÀ» ¼ö¹Û¿¡ ¾ø°Ô µË´Ï´Ù.

Shell APIÁß¿¡ SHFormatDrive()¶ó´Â ÇÔ¼ö°¡ ÀÖ±â´Â ÇÏÁö¸¸ ShellApi.h¿¡ Á¤ÀǵÇÁöµµ ¾ÊÀ» »Ó´õ·¯ MSDNÀÇ Shell API Reference¿¡µµ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù.

ÇÏÁö¸¸ Àß Ã£¾Æº¸¸é MSDNÀÇ KnowledgeBase¿¡¼­

HOWTO: Call SHFormatDrive in Windows 95 and Windows NT
Article ID: Q173688

¶ó´Â ±Û¿¡¼­ ÀÌ ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀ» ãÀ»¼ö ÀÖ½À´Ï´Ù.

KnowledgeBase¿¡ ³ª¿Â ³»¿ëÀ» ±âÃÊ·Î ¿©±â¼­ SHFormatDrive()¶ó´Â API¸¦ ¼³¸íÇÏ°Ú½À´Ï´Ù.

ÇÔ¼öÀÇ ¼±¾ðÀº ´ÙÀ½°ú °°½À´Ï´Ù.

HWND hwnd

HWND ÆĶó¸ÞÅÍ´Â ´Ùµé ¾Æ½Ã°ÚÁÒ? ºÎ¸ð À©µµ¿ì¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù.ÀÌ ÆĶó¸ÞÅÍ¿¡ NULLÀ» ´ëÀÔÇÒ¼ö ¾ø½À´Ï´Ù. ¹Ýµå½Ã ¾î¶² À©µµ¿ìÀΰ¡¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

UINT drive

ÀÌ ÆĶó¸ÞÅÍ¿¡´Â 0À¸·Î ½ÃÀÛÇÏ´Â µå¶óÀ̺êÀÇ À妽º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
A µå¶óÀ̺ê´Â 0, Bµå¶óÀ̺ê´Â 1 ÀÌÁÒ.

UINT fmtID

µð½ºÅ©ÀÇ ½Äº°ÀÚ¸¦ ÁöÁ¤ÇÏ´Â ÆĶó¸ÞÅÍÀε¥ ÇöÀç´Â SHFMT_ID_DEFAULT¸¸ ¾µ¼ö ÀÖ´Ù°í µÇ¾îÀÖ´õ±º¿ä.

UINT options

ÀÌ ÆĶó¸ÞÅÍ´Â 0 °ú SHFMT_OPT_FULL, SHFMT_OPT_SYSONLY Áß Çϳª¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. 0Àº ºü¸¥Æ÷¸ËÀ» ¶æÇÏ°í SHFMT_OPT_FULLÀº ÀüüÆ÷¸ËÀ», SHFMT_OPT_SYSONLY´Â ½Ã½ºÅÛ ÆÄÀϸ¸ º¹»çÇÏ´Â °ÍÀ» ¶æÇÕ´Ï´Ù.ºÎÆà µð½ºÅ©¸¦ ¸¸µé·Á¸é SHFMT_OPT_SYSONLY¸¦ ½á¾ß°ÚÁö¿ä.

¸®ÅÏ°ª : 0, SHFMT_OPT_FULL(1), SHFMT_OPT_SYSONLY(2)ÀÇ Á¶ÇÕÀÌ ¸®Åϵ˴ϴÙ. ÆĶó¸ÞÅÍ·Î ³Ñ°ÜÁØ ¿É¼ÇÀº »ç¿ëÀÚ°¡ ´Ù¸¥ ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é ¹«½ÃµÇ±â ¶§¹®¿¡ ÀÌ ¸®ÅÏ°ªÀ¸·Î »ç¿ëÀÚ°¡ ¾î¶² ¼±ÅÃÀ» Çß´ÂÁö ¾Ë¼ö ÀÖ½À´Ï´Ù.

±×·±µ¥ Àú´Â ÀüüÆ÷¸ËÀ» ¼±ÅÃÇÏ°í ½ÇÇàÇß´õ´Ï 5¶ó´Â ¸®ÅÏ°ªÀÌ ³ª¿À´õ±º¿ä.

5¶õ Á¶ÇÕÀº ¾ø´Âµ¥ ¸®ÅÏ°ªÀÌ ÀÌ·±°ÍÀ» º¸¸é ´Ù¸¥ ¿É¼ÇÀÌ ÀÖ³ª º¸´Ù ÇÏ°í 5¶õ ¿É¼ÇÀ» ÁÖ°í SHFormatDrive¸¦ ½ÇÇàÇغ¸¾ÒÁö¸¸ SHFMT_OPT_FULLÀ» ÁØ °Í°ú ¶È°°´õ±º¿ä.

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é Çì´õ¿¡ ÀÌ·± ¼±¾ðµéÀ» Ãß°¡ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ²À Çì´õ°¡ ¾Æ´Ï´õ¶óµµ »ç¿ëÇϱâ Àü¿¡¸¸ ¼±¾ðÇÏ¸é µÇÁÒ.

#pragma comment(lib,"SHELL32.LIB")´Â Á¦°¡ ±âº»¶óÀ̺귯¸®°¡ ¾Æ´Ñ°ÍÀ» »ç¿ëÇÒ ¶§ ¾²´Â ¹æ¹ýÀε¥ FileView ÅÇ¿¡¼­ ¶óÀ̺귯¸®¸¦ ã¾Æ¼­ ³ÖÀº°Íº¸´Ù ÀÌ ¹æ¹ýÀÌ ´õ ÆíÇÕ´Ï´Ù. (À̰͵µ TipÀ̱º. *^^*)

 

//----------------------------------------------------------------------------

#pragma comment(lib,"SHELL32.LIB")

#if !defined(SHFMT_OPT_FULL)

#if defined (__cplusplus)
extern "C" {
#endif

DWORD WINAPI SHFormatDrive(HWND hwnd,
                           UINT drive,
                           UINT fmtID,
                           UINT options);

//
// Special value of fmtID which means "use the defaultformat"
//
 
#define SHFMT_ID_DEFAULT   0xFFFF

//
// Option bits for options parameter
//

#define SHFMT_OPT_FULL     0x0001
#define SHFMT_OPT_SYSONLY  0x0002
 
//
// Special return values. PLEASE NOTE that these are DWORD values.
//

#define SHFMT_ERROR     0xFFFFFFFFL      // Error on last format,
                                                                 // drive may be formatable
#define SHFMT_CANCEL    0xFFFFFFFEL     // Last format wascanceled
#define SHFMT_NOFORMAT  0xFFFFFFFDL  // Drive is not formatable
 
#if defined (__cplusplus)
}
#endif
#endif

//---------------------------------------------------------------------------- 

 

<CAnimateCtrl µî¿¡¼­ WM_LBUTTONDOWN °ú °°Àº ¸¶¿ì½º ¸Þ½ÃÁö ó¸®>

CAnimateCtrl µî¿¡¼­ WM_LBUTTONDOWN °ú °°Àº ¸¶¿ì½º ¸Þ½ÃÁö°¡ ¿ÀÁö ¾Ê½À´Ï´Ù.

WM_NCHITTEST ¸Þ½ÃÁö´Â »ç¿ëÀÚ°¡ À©µµ¿ì¿¡ ¸¶¿ì½º¸¦ Ŭ¸¯ÇÒ ¶§¸¶´Ù ¹ß»ýÇÏ´Â ÇÔ¼ö·Î ÀÌ ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â °ª¿¡ µû¶ó,

À» °áÁ¤ÇÏ°Ô µË´Ï´Ù.

 CAnimateCtrl  ¿¡¼­ WM_LBUTTONDOWN ¸Þ½ÃÁö¸¦ ¹ÞÀ¸·Á¸é, WM_NCHITTEST ¸Þ½ÃÁö Çڵ鷯¿¡¼­

ÇÏ¸é µÅ¿ä ½±ÁÒ?

  

<Console Window ¿¡ Trace Á¤º¸ º¸³»±â>

  Debugging ÇÒ¶§ trace ÇÏ°í ½ÍÀº Á¤º¸¸¦ µð¹ö±ë âÀÌ ¾Æ´Ñ (¿Ö³ÄÇÏ¸é µð¹ö±ëâÀº ¹Ýµå½Ã debug ¸ðµå·Î ÇÁ·Î±×·¥À» debugger ¿¡ attach ÇÑ »óÅ·Π½ÇÇàÇØ¾ß Çϴϱî..) Console â¿¡ º¸¿©ÁÖ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸±â·ÎÇÏ°Ú½À´Ï´Ù.

½ÇÁ¦·Î ÀÌ¿Í °°Àº ºñ½ÁÇÑÀÏÀ» ÇØÁÖ´Â ÇÁ·Î±×·¥ÀÌ Àִµ¥, ¿ì¸®ÀÇ °£´ÜÇÑ ±¸Á¶¿Í´Â °ü°è°¡ ¾øÁö¸¸, Àá±ñ¸¸ »ìÆ캸µµ·Ï ÇÏÁÒ.

debug ¸ðµå·Î ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀÏ µÇ¸é..Trace() ÇÔ¼öµµ ÇÁ·Î±×·¥¿¡ °°ÀÌ Æ÷ÇԵ˴ϴÙ. 

±×·¡¼­ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µµÁß¿¡ trace ¹®ÀåÀ» ¸¸³ª¸é ÇÁ·Î±×·¥Àº system trace queue ¿¡ trace ¹®ÀåÀ» ³Ö°Ô µÇÁÒ.. 

¹°·Ð À̶§ µð¹ö°Å°¡ active ÇÑ »óŶó¸é debugger °¡ trace queue ¸¦ ÈÄÅ·Çؼ­ ¸Þ¼¼Áö¸¦ °¡Á®¿À´Â°Í °°½À´Ï´Ù.. ( ¿¹»óÀÔ´Ï´Ù. ^^;;;;)

ÀÚ. ±×·³ ¾î¶»°Ô ÇÁ·Î±×·¥ÀÌ console ¿¡ trace ó·³ ¿øÇÏ´Â °ªÀ» º¸¿©ÁÙ ¼ö ÀÖÀ»±î¿ä? 

¹æ¹ýÀº ¾Æ·¡ÀÇ ÄÚµå ó·³ ¸í½ÃÀûÀÔ´Ï´Ù.

 

 

ÀÌ·¸°Ô »ç¿ëÇϽøé.. Trace ¿¡¼­ Âï´Â ³»¿ëÀÌ console â¿¡ º¸¿©Áø´ä´Ï´Ù.

 

<makefile À» .dsw ·Î ¹Ù²Ù¾î º¸ÀÚ>

make file´Â bat ÆÄÀÏÀÔ´Ï´Ù. ±×·¯´Ï±î ¼ø¼­´ë·Î ÀÐÀ¸½Ã¸é µË´Ï´Ù.

 ¹®Á¦´Â Çؼ®ÀÌ ¾Æ´Ï°í ¾²ÀÌ´Â ¿ëµµ ÀÌ°ÚÁÒ. Áï, makefile À» dsw ·Î ¸¸µå´Â °Í ¸»ÀÌÁÒ.

¸ÕÀú make file °¡ dll, exe ÀÎÁö  ÆÇ´ÜÇÕ´Ï´Ù. ( ¿¹Á¦ make file Àº exe ÀÔ´Ï´Ù.)

±× ´ÙÀ½¿¡ VC++ ¿¡¼­ new ·Î ¸¸µå½Ç¶§ win32 ·Î ½ÃÀÛÇÏ´Â ÇÁ·ÎÁ§Æ® 4°¡Áö Áß¿¡ ÇÑ°¡Áö¸¦ ÅÃÇÕ´Ï´Ù.

´ëºÎºÐ win32 Application ÀÌ°í, °£È¤ win32 Dynamic_Link Library ÀÌ°ÚÁÒ (¿¹Á¦´Â win32 Application)

ºó ÇÁ·ÎÁ§Æ®·Î(Step1 of 1) Çؼ­ ¸¸µì´Ï´Ù.

 

ÇÁ·ÎÁ§Æ®°¡ ¿Ï¼ºµÇ¸é ÀÌ ÇÁ·ÎÁ§Æ®°¡ ÀÖ´Â Æú´õ·Î make file ÀÌ ÀÖ´ø °÷ÀÇ *.cpp, *.c, *.h µîÀ» º¹»çÇØ ³õ½À´Ï´Ù. 

±×´ÙÀ½¿¡ ÇÁ·ÎÁ§Æ®ÀÇ FileView ¿¡¼­ ÇÊ¿äÇϽŠȭÀϵéÀ» Ãß°¡ÇÕ´Ï´Ù. 

¾Æ¸¶ ÄÄÆÄÀÏ ¿À·ù´Â °ÅÀÇ ÀϾÁö ¾ÊÀ»°Ì´Ï´Ù. ´ë½Å link ¿À·ù°¡ ¸¹ÀÌ ÀϾ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¿©±â¼­ ´Ù½Ã make file Çؼ®ÀÌ µé¾î °¡¾ß ÇÕ´Ï´Ù. 

¿¹Á¦¿¡¼­´Â ilvfonts.lib winviews.lib °¡ º¸ÀÌ´Â ±º¿ä. À̰͵éÀ» ¸µÅ© ½ÃÄÑ ÁÖ½Ã¸é µÇ°Ú½À´Ï´Ù. ¾î¶²°ÍÀº Visual Stdio °¡ ´ëºÎºÐÀ» ÇØÁÖÁö¸¸ ¾î¶»°ÍÀº ¼öµ¿À¸·Î ÇØÁà¾ß ÇÕ´Ï´Ù. ¿©±â¼­´Â µÎ°³ ¸ðµÎ ±âº» ¸µÅ© lib °¡ ¾Æ´Ï±º¿ä.   

ÀÌ»óÀÔ´Ï´Ù. ÀÌ ¸ðµç °ÍÀÌ ¸ðµç makefile ¿¡ ´Ù Àû¿ëµÇ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù.

¿¹¸¦ µé¸é ddk ¿¡ ÀÖ´Â makefile ´Â ¹Ø¿¡ Çؼ®¹× ±âŸ µîµî Â÷ÀÌ°¡ ¸¹¾Æ¼­ ¾ÆÁ÷±îÁö Á÷Á¢ makefile ¿¡¼­ .dsw ¸¦ ¸¸µçÀûÀº ¾ø½À´Ï´Ù.

  

********************** Make file **********************************************
# --------------------------------------------------------------------------
#   platform : msvc5
#   subsytem : stat_md
# --------------------------------------------------------------------------

// # Àº ÁÖ¼®ÀÔ´Ï´Ù.

ROOTDIR      = ..
VIEWSDIR     = $(ROOTDIR)\..\..
VIEWSINCDIR  = $(VIEWSDIR)\include
VIEWSLIBDIR  = $(VIEWSDIR)\lib\$(SYSTEM)\$(SUBSYSTEM)
SYSTEM       = msvc5
SUBSYSTEM    = stat_md
 
// ¹«¾ù¿¡ ¾²ÀÌ´ÂÁö ¸ð¸£Áö¸¸ ROOTDIR Àº .. À̶ó°í Çß±º¿ä.
// ¹«¾ù¿¡ ¾²ÀÌ´ÂÁö ¸ð¸£Áö¸¸ VIEWSDIR Àº $(ROOTDIR)\..\..
// ±×·¯¸é VIEWSDIR Àº ROOTDIR À» ¾Æ´Ï±î
// MIEWSDIR ..\..\.. ÀÌ µÇ´Â ±º¿ä.
// ¿©±â¼­ $(¹®ÀÚ¿­) Àº ROOTDIR ·Î ¼±¾ðÇÑ °ÍÀ» ´ëÄ¡µË´Ï´Ù.
// ÀÌÁ¤µµ¸é À§¿¡ °ÍÀº ´Ù Çؼ®ÀÌ µÇ¼Ì°í
 
// # Àº ÁÖ¼®
# Debug options:
DEBUG        = 0
LDDEBUG      = 0
!if $(DEBUG)
DEBUGFLAGS   = /Zi /Od /D"DEBUG"

LDDEBUG      = 1
RCDEFINES    = /d_DEBUG
!else
DEBUGFLAGS   = /Gs /Ot /Ox /O2
RCDEFINES    = /dNDEBUG
!endif
!if $(LDDEBUG)
LDDBGFLAGS   = /debug /DEBUGTYPE:CV
ARFLAGS   =
!else
LDDBGFLAGS   = /PDB:none
ARFLAGS   =
!endif

// if - else ¹®Àº ¾Æ½ÇÅ×´Ï ¼³¸í ¾È ÇÏ°Ú½À´Ï´Ù.

CCC          = cl
COMPILERFLAGS= /c /DWIN32 /MD /nologo /W3 /G3
LD           = link
LDFLAGS      = $(LDDBGFLAGS) /NOLOGO /SUBSYSTEM:WINDOWS /MACHINE:I386 /INCREMENTAL:YES
OUTPUTFILE   = -Fo
RC           = rc
RCFLAGS      = /c1252 /I$(VIEWSDIR)\data\res $(RCDEFINES)
SYSLIBS      = kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib advapi32.lib wsock32.lib imm32.lib
 
CCFLAGSSYS   = /I$(VIEWSINCDIR) $(COMPILERFLAGS)
CCFLAGS      = $(DEBUGFLAGS) $(CCFLAGSSYS)
VIEWSLNK     = views.lnk
 
ILVFONTSDIR  = $(ROOTDIR)\..\vectfont
ILVFONTSLIB  = $(ILVFONTSDIR)\$(SYSTEM)\ilvfonts.lib
ILVFONTSLIBNAME= ilvfonts.lib
ILVFONTSDEP  = $(ILVFONTSDIR)\$(SYSTEM)\$(ILVFONTSLIBNAME)

// »ó´çÈ÷ ±æ¾î º¸ÀÌÁö¸¸ À§¿¡ ¼³¸íÇÑ °ÍÀ¸·Î ¸ðÀ߶õ °ÍÀÌ ÀÖ³ª¿ä.
// ¼³¸í ÇÑ °ÍÀ¸·Î Çؼ®ÀÌ ´Ù µÇÁÒ.
// ¿¹¸¦ µé¾î¼­ ILVFONTSDEP ´Â
// ´ÙÀ½°ú °°ÀÌ Çؼ® µÇ°Ú±º¿ä.
// ..\..\vectfont\msvc5\ilvfonts.lib

# --------------------------------------------------------------------------
PROGRAMS     = readdxf dxf2ilv ilv2dxf
 
// ¿©±â±îÁö°¡ Define µÈ °ÍÀ̱º¿ä.
 
all: $(PROGRAMS)
 
# --------------------------------------------------------------------------

readdxf: readdxf.exe
readdxf.exe: $(ILVFONTSDEP) dxread.obj readdxf.obj viewsico.res
// readdxf.exe Àº dxread.obj readdxf.obj viewsico.res ·Î ÀÌ·ç¿ö Áø´Ù.

-@if exist readdxf.exe del readdxf.exe
// ¸¸ÀÏ ÀÖ´Ù¸é readdxf.exe ¸¦ Áö¿ö¶ó

$(LD) $(LDFLAGS) $(ILVFONTSLIB) $(VIEWSLIBDIR)\ilvgadgt.lib $(VIEWSLIBDIR)\views.lib $(VIEWSLIBDIR)\winviews.lib
$(USERSYSLIBS) $(SYSLIBS) -OUT:$@ readdxf.obj dxread.obj  $(VIEWSLIBDIR)\ilvmain.obj viewsico.res
// readdxf.exe Àº dxread.obj readdxf.obj viewsico.res ¸¦ link Çضó
// ¸µÅ© ¿É¼ÇÀº link /PDB:none /NOLOGO /SUBSYSTEM:WINDOWS /MACHINE:I386 /INCREMENTAL:YES
// $(ILVFONTSDIR)\$(SYSTEM)\ilvfonts.lib
// $(VIEWSLIBDIR)\winviews.lib $(USERSYSLIBS) $(SYSLIBS)
// -OUT:$@ readdxf.obj dxread.obj  
// $(VIEWSLIBDIR)\ilvmain.obj viewsico.res                ÀÌ´Ù.

readdxf.obj: $(ROOTDIR)\src\readdxf.cpp $(ROOTDIR)\dxfincl\dxread.h
-@if exist readdxf.obj del readdxf.obj
$(CCC) /I$(ROOTDIR) /I$(ILVFONTSDIR) $(CCFLAGS) $(ROOTDIR)\src\readdxf.cpp
 
dxread.obj: $(ROOTDIR)\src\dxread.cpp $(ROOTDIR)\dxfincl\dxread.h
-@if exist dxread.obj del dxread.obj
$(CCC) /I$(ROOTDIR) /I$(ILVFONTSDIR) $(CCFLAGS) $(ROOTDIR)\src\dxread.cpp
# --------------------------------------------------------------------------
$(ILVFONTSDEP):
cd $(ILVFONTSDIR)\$(SYSTEM)
nmake $(ILVFONTSLIBNAME)
cd ..\..\dxf\$(SYSTEM)

// ¹Ø¿¡ °ÍÀº
// ¿¹¸¦ µé¾î¼­ readdxf.obj °¡ ÀÖÀ¸¸é Áö¿ö¶ó.
// ... µîµîµî.
# --------------------------------------------------------------------------
clean1:
@echo Cleaning ....
-@if exist readdxf.obj del readdxf.obj
-@if exist dxread.obj del dxread.obj
-@if exist dxf2ilv.obj del dxf2ilv.obj
-@if exist dxwrite.obj del dxwrite.obj
-@if exist ilv2dxf.obj del ilv2dxf.obj
-@if exist readdxf.exe del readdxf.exe
-@if exist dxf2ilv.exe del dxf2ilv.exe
-@if exist ilv2dxf.exe del ilv2dxf.exe
 
# --------------------------------------------------------------------------
viewsico.res: $(VIEWSDIR)\data\res\viewsico.rc
$(RC) $(RCFLAGS) -r -foviewsico.res $(VIEWSDIR)\data\res\viewsico.rc

// viewsico.res ´Â rc °¡ ÄÄÆÄÀÏ ÇϹǷÎ
// ´ÙÀ½°ú °°Àº ÆĶó¹ÌÅÍ·Î ÄÄÆÄÀÏÀÌ µÇ°Ú±º¿ä.
// ..\..\..\data\res\viewsico.rc rc /c1252 /I..\..\..\data\res /d_DEBUG -r -foviewsico.res ..\..\..\data\res\viewsico.rc
// ÆĶó¹ÌÅÍ ¼³¸íÀº rc ÄÄÆÄÀÏÀ» º¸¼Å¾ß °Ú±º¿ä.

clean: clean1
-@if exist *.ncb del *.ncb
-@if exist *.pdb del *.pdb
-@if exist *.ilk del *.ilk
-@if exist *.idb del *.idb
-@if exist *.plg del *.plg
-@if exist *.map del *.map
-@if exist *.res del *.res
-@if exist *.bak del *.bak
-@if exist *.lnk del *.lnk
***************************************** Ending ******************************

 

- the end of this article -