Contents:
- 1 °³¿ä
- 2 °ü·Ã¼Àû
- 3 Áֿ丵ũ
- 4 Technical Articles
- 5 Useful Classes
- 6 Windows API ÀÇ Class ¸¸µé±â
- 6.1 Window Framework Class
- 6.2 Child Window Class
- 6.3 Message Handler
- 7 Class ¸¦ ÀÌ¿ëÇÑ Àü¿ªº¯¼ö ¸¸µé±â
- 8 Programming Tips
- 8.1 Á¤¼ö¿Í ½Ç¼öÀÇ ÃÖ´ë,ÃÖ¼Ò°ªÀº ¾ó¸¶Àϱî?
- 8.2 Visual C++ ¿¡¼ ÆÄÀÏÀ̳ª µð·ºÅ丮¿Í °ü·ÃµÈ MAX °ªÀº ¾ó¸¶Àϱî?
- 8.3 µû¿ÈÇ¥("") ¾È¿¡ ÀÖ´Â ¹®ÀÚ¿ Àбâ
- 9 ´Ù¿î·Îµå
- 10 °ü·Ã¸µÅ©
- C++ ±âÃÊ Ç÷¯½º Á¦3ÆÇ
- Stephen Prata Àú, À̵µÈñ ¿ª, ¼º¾È´ç
- More Effective C++
- Scott Meyers Àú, °û¿ëÀç ¿ª, ÀÎÆ÷ºÏ
3 Áֿ丵ũ #
6 Windows API ÀÇ Class ¸¸µé±â #
WinAPI ¸¸À» ÀÌ¿ëÇÏ¿© À©µµ¿ì ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù´Â °ÍÀº ½¬¿îÀÏÀÌ ¾Æ´Ï´Ù. °£´ÜÈ÷ âÀ» ¿°í ´Ý´Â °úÁ¤¸¸ ÇØµµ 100 ¿© ¶óÀÎÀ» ³Ñ°Ü¹ö¸®±â Àϼö´Ù. ±×¸®°í ¸Å¹ø °ÅÀÇ ¶È°°Àº Äڵ带 ÇÊ¿ä·Î ÇÑ´Ù. ±×·¡¼ WinAPI ¸¦ ³ª¸§´ë·Î Ŭ·¡½ºÈÇÏ¿© ÀÌ¿ëÇϰí ÀÖ´Ù. MFC ¿Í °°Àº ÁÁÀº Framework µµ ÀÖÁö¸¸ °£´ÜÇÑ À©µµ¿ì ÇÁ·Î±×·¥À» ¸¸µé±â¿¡´Â µ¢Ä¡°¡ Á» Å« ÆíÀÌ´Ù. ±×¸®°í WinAPI ¸¦ Ŭ·¡½ºÈ ÇÏ¸é¼ ³ª¸§´ë·Î ÇÁ·Î±×·¡¹Ö¿¡ Àç¹Ìµµ ´À³¥ ¼ö ÀÖ´Ù. ƯÈ÷ C++ ÀÇ Å¬·¡½º¿¡ ´ëÇÏ¿© ÁÁÀº °æÇèÀÌ µÉ °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ±×·³ WinAPI ¸¦ ¾î¶»°Ô Ŭ·¡½ºÈ ÇÒ °ÍÀΰ¡¿¡ ´ëÇÏ¿© À̾߱â ÇØº¸ÀÚ.
6.1 Window Framework Class #
ÀÚ·á Á¤¸® Áß
6.2 Child Window Class #
ÀÚ·á Á¤¸® Áß
6.3 Message Handler #
¸Þ¼¼Áö ¸ÊÀÇ µ¥ÀÌŸÇü°ú Ŭ·¡½ºÀÇ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¼±¾ðÇÑ´Ù.
1 class CView;
2
3 typedef void( CView::*CViewFunPointer )();
4 typedef struct tagMessageMap
5 {
6 UINT iMsg;
7 CViewFunPointer fp;
8 } MessageMap;
9
10 static CViewFunPointer fpCViewGlobal;
11
12 CView app;
¸Þ½ÃÁö ¸Ê¿¡ ¸ÊÇÎÇÒ ¸â¹ö ÇÔ¼ö¸¦ Á¤ÀÇÇÑ´Ù.
1 class CView
2 {
3 public:
4 static MessageMap messageMap[];
5 public:
6 void OnCreate();
7 void OnDraw();
8 void OnDestroy();
9 };
¸Å¼¼Áö ¸Ê¿¡ Ŭ·¡½º ÇÔ¼ö¸¦ ¸ÊÇÎÇÑ´Ù.
1 MessageMap CView::messageMap[] = {
2 { WM_CREATE, CView::OnCreate },
3 { WM_PAINT, CView::OnDraw },
4 { WM_DESTROY, CView::OnDestroy },
5 { 0, NULL }
6 };
À©µµ¿ì ¸Þ¼¼Áö ÇÁ·Î½ÃÀú¿¡¼ ¸Þ¼¼Áö ¸Ê 󸮸¦ ÇÑ´Ù.
1 LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
2 {
3 int i = 0;
4 while( CView::messageMap[i].iMsg != 0 )
5 {
6 if ( iMsg == CView::messageMap[i].iMsg )
7 {
8 fpCViewGlobal = CView::messageMap[i].fp;
9 (app.*fpCViewGlobal) ();
10 return 0;
11 }
12 ++i;
13 }
14 return DefWindowProc( hWnd, iMsg, wParam, lParam );
15 }
7 Class ¸¦ ÀÌ¿ëÇÑ Àü¿ªº¯¼ö ¸¸µé±â #
C/C++ »Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼µµ Àü¿ªº¯¼ö´Â »ç¿ëÇÏ±â Æí¸®ÇÏ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ Æí¸®¼ºµµ ÇÑÆíÀ¸·Î´Â ¾ç³¯ÀÇ °ËÀ¸·Î ÀÛ¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌÀ¯´Â Á÷Á¢ À̾߱âÇÏÁö ¾Ê´õ¶óµµ ¿©·¯ ÇÁ·Î±×·¡¹Ö ¾ð¾î ¹®¹ýÃ¥ µî¿¡¼ ½±°Ô ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ëºÎºÐÀº Àü¿ªº¯¼ö¸¦ ÃÖ´ëÇÑ ÁÙÀ̶ó°í ÇÏÁö¸¸ ÇÊ¿äÇÒ ¶§´Â ²À ½á¾ß ÇÑ´Ù. ÀÌ·²¶§ C++ ¿¡¼´Â Ŭ·¡½ºÀÇ »ó¼ÓÀ» ÀÌ¿ëÇÏ¿© ¼Õ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ´Ù.
°³³äÀº °£´ÜÇÏ´Ù. ÃÖ»óÀ§ Base Ŭ·¡½º¸¦ Çϳª Á¤ÀÇÇÑ ÈÄ °Å±â¿¡ ÇØ´ç º¯¼ö¸¦ ¼±¾ðÇÑ ÈÄ »ó¼Ó ¹ÞÀ¸¸é µÈ´Ù. ÇÏÁö¸¸ ±×·¸°Ô ÇÑ´Ù¸é µ¶¸³µÈ ¿µ¿ª¿¡ º¯¼ö°¡ »ý¼ºµÇ¾î °øÀ¯ÇÒ ¼ö ¾ø°Ô µÈ´Ù. À̶§ Ŭ·¡½ºÀÇ Storage Class Áß¿¡¼ static À» ÀÌ¿ëÇϸé ÀÌ·¯ÇÑ ¹®Á¦¸¦ ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ´Ù. static º¯¼ö´Â °´Ã¼°¡ ¾Æ¹«¸® ¸¹ÀÌ »ý¼ºµÇ¾îµµ ÇϳªÀÇ °ø°£¸¸ Á¸ÀçÇÏ°Ô µÇ¹Ç·Î Àü¿ª º¯¼öÀÇ ¿ªÈ°À» ÃæºÐÈ÷ ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ÀϹÝÀûÀÎ Àü¿ªº¯¼ö¿Í´Â ´Þ¸® Ŭ·¡½º ³»¿¡ ¼±¾ðµÇ¹Ç·Î ¸â¹ö ÇÔ¼ö¸¦ ¸¸µé¾î µÐ´Ù¸é ¾ÈÀüÇÏ°Ô Àü¿ª º¯¼ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
8.1 Á¤¼ö¿Í ½Ç¼öÀÇ ÃÖ´ë,ÃÖ¼Ò°ªÀº ¾ó¸¶Àϱî? #
C/C++ ÇÁ·Î±×·¡¹ÖÇÏ¸é¼ °£È¤ µ¥ÀÌŸÇüÀÇ ÃÖ¼Ò°ª°ú ÃÖ´ë°ªÀÌ ÇÊ¿äÇÑ °æ¿ì°¡ ¸¹´Ù. º¸ÅëÀº ±×³É ÀÓÀÇÀÇ °ª¸¦ ÁöÁ¤ÇÏ¿© »ç¿ëÇÑ´Ù. ±×·¯³ª C/C++ ¿¡¼´Â ´ÙÀ½°ú °°Àº Ç¥ÁذªÀ» Á¦°øÇϰí ÀÖ´Ù.
- Á¤¼öÀÇ ÃÖ´ë,ÃÖ¼Ò°ª
- LIMITS.H ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
- INT_MAX, INT_MIN, CHAR_MAX, CHAR_MIN, LONG_MAX, LONG_MIN, ...
- Signed Çü°ú Unsigned ÇüÀ¸·Î ±¸ºÐÇÏ¿© Á¤ÀÇ µÇ¾î ÀÖÀ½, Çì´õ ÆÄÀÏ Âü°í.
- ½Ç¼öÀÇ ÃÖ´ë,ÃÖ¼Ò°ª
- FLOAT.H ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
- FLT_MAX, FLT_MIN, DBL_MAX, DBL_MIN, LDBL_MAX, LDBL_MIN, ...
8.2 Visual C++ ¿¡¼ ÆÄÀÏÀ̳ª µð·ºÅ丮¿Í °ü·ÃµÈ MAX °ªÀº ¾ó¸¶Àϱî? #
À©µµ¿ìÁî ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§ ÆÄÀϸíÀ̳ª µð·ºÅ丮¸íÀ» ¾î´ÀÁ¤µµ ±æÀÌ·Î Á¤ÇؾßÇÒÁö °í¹ÎµÉ ¶§°¡ ¸¹´Ù. ÇÏÁö¸¸ ¾Æ·¡¿Í °°ÀÌ MAX °ªÀÌ Á¤ÀǵǾî ÀÖ´Ù. ±×·¯³ª Ç¥ÁØ C/C++ ¿¡´Â Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù.
- windef.h ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
- stdlib.h ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
- _MAX_PATH, _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, _MAX_EXT
8.3 µû¿ÈÇ¥("") ¾È¿¡ ÀÖ´Â ¹®ÀÚ¿ Àбâ #
°£È¤ ÅØ½ºÆ® ÆÄÀÏ¿¡¼ ¹®ÀÚ¿À» ÀÐÀ»¶§ µû¿ÈÇ¥ ( "" ) »çÀÌ¿¡ ÀÖ´Â ¹®ÀÚ¿À» Àоî¾ßÇÒ °æ¿ì°¡ ÀÖ´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ¸ð¸£¸é µû¿ÈÇ¥¸¦ ÀÏÀÏÀÌ ¶§³»¾ßÇÏ´Â ¼ö°í (?) ¸¦ ÇØ¾ßÇÑ´Ù.