{{| [[TableOfContents]] |}} = MFC? = Microsoft Foundation Classes 를 줄여서 부른다. ê¸°ì •ì˜ëœ í´ëž˜ìŠ¤ì˜ ì§‘í•©ìœ¼ë¡œ Visual C++ì´ ì´ í´ëž˜ìŠ¤ë“¤ì„ ê°€ë°˜ìœ¼ë¡œ í•˜ê³ ìžˆë‹¤. ì´ í´ëž˜ìФ êµ°ì€ MS Windows API를 래핑(Wrapping)하여서 ê°ì²´ì§€í–¥ì ì ‘ê·¼ë²•ìœ¼ë¡œ 프로그래ë°ì„ 하ë„ë¡ ì„¤ê³„ë˜ì–´ 있다. ì˜ˆì „ì—는 볼랜드ì—서 ë‚´ë†“ì€ OWL(Object Windows Library)ë¼ëŠ” ê²ƒë„ ì“°ì˜€ë˜ ê±¸ë¡œ 아는ë°... -_-; ì§€ê¸ˆì€ ì–´ë””ë¡œ ê°€ë²„ë ¸ëŠ”ì§€ 모른다. ã…‹ã…‹ ''ë°±ê³¼ì‚¬ì „) WikiPedia:Microsoft_Foundation_Classes, WikiPedia:Object_Windows_Library '' = MFC notation = MFCì˜ í´ëž˜ìŠ¤ë“¤ì€ CDocument, CView와 ê°™ì´ C로 시작하는 ì´ë¦„ì„ ê°–ëŠ”ë‹¤. ë°ì´í„° 멤버들ì—는 m_ ë¼ëŠ” ì ‘ë‘어를 붙여서 ë§Œë“¤ì–´ì ¸ 있다. ë³€ìˆ˜ì˜ ì´ë¦„ì•žì— p, i, l, h ë“±ì„ ì´ìš©í•´ì„œ ê·¸ 종류를 ë³€ìˆ˜ì˜ ì´ë¦„으로 ì¶”ì •ê°€ëŠ¥í•˜ê²Œ 하는 [í—가리안표기법]ì„ ì´ìš©í•œë‹¤. ì´ëŠ” 과거 C환경하ì—서 í˜•ì‹ ê²€ì‚¬ê¸°ëŠ¥ì˜ ë¶€ìž¬ë¡œ ì¸í•œ ì—러를 막기위해 ê³ ì•ˆëœ ì¸¡ë©´ì´ í¬ê¸° ë•Œë¬¸ì— C++ì— ë“¤ì–´ì™€ì„œëŠ” 반드시 필요한 í‘œê¸°ë²•ì€ ì•„ë‹ˆë‹¤. = Simple MFC Window = {{{~cpp #include <afxwin.h> //about class library class CExApp : public CWinApp { public: virtual BOOL InitInstance(); }; class CExWnd : public CFrameWnd { public: CExWnd() { Create(0, "MFC Application"); // ê¸°ë³¸ì„¤ì •ìœ¼ë¡œ "MFC Application"ì´ë¼ëŠ” 타ì´í‹€ì„ 가진 í”„ë ˆìž„ì„ ìƒì„±í•œë‹¤ } }; BOOL CExApp::InitInstance(void) { m_pMainWnd = new CExWnd; // ìƒì„±ëœ í”„ë ˆìž„ì„ ìœˆë„ìš°ì— ë¶™ì¸ë‹¤. m_pMainWnd->ShowWindow(m_nCmdShow); return TRUE; } CExApp Application; // ìš´ì˜ì²´ì œê°€ 윈ë„우를 만들기위해서는 ì´ë¥¼ ì°¸ì¡°í• ì „ì— ë³€ìˆ˜ê°€ 필요하다. //WinMain() 함수는 MFC ì˜ í´ëž˜ìФ ì•ˆì— êµ¬í˜„ì´ ë˜ì–´ìžˆê¸° ë•Œë¬¸ì— API로 윈ë„우를 만들때보다 간편하게 작성하는 ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤. }}} Upload:simple_mfc_window_showing.JPG [[BR]] ''ì»´íŒŒì¼ í•´ë³´ê³ ìž í•˜ëŠ” ë¶„ë“¤ì€ Project/Setting/General í•목ì—서 MFC DLLì„ ì‚¬ìš©í•œë‹¤ëŠ” ì„¤ì •ì„ í•´ì•¼í•œë‹¤. 그러지 ì•Šì„ ê²½ìš° ë§ì»¤ê°€ 다ìŒì˜ ì—러를 ë°œìƒì‹œí‚¨ë‹¤. nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex Debug/ex13_01.exe : fatal error LNK1120: 2 unresolved externals'' Upload:simple_mfc_painter.rar = 추천서ì = || [[ISBN(1572316950)]] || [[ISBN(0201407213)]] || [[ISBN(8931427301)]] || [[ISBN(0764543881)]] || ''ì¸ë‚´ì‹¬ì—†ì´ 번ì—서 ì½ìœ¼ë©´ 안ë˜ëŠ” ì±…. Wrox BegVC++6 ë‚´ìš©ì˜ ì§„í–‰ë°©ë²•ì€ Ivor í• ì•„ë²„ì§€ 답게 재미있다.'' || [[ISBN(1556227043)]] || [[ISBN(1572313498)]] ||[[ISBN(0672314924)]] || [[ISBN(0201634465)]] || ''Com/Dcom PrimerPlus 는 현재 ì ˆíŒ. 곽용재씨가 ì´ë¦„ì„ ë‚ ë¦¬ê²Œ ëœ ê³„ê¸°ê°€ ëœ ì•„ì£¼ 잘 번ì—ëœ ì±…ì¤‘ì˜ í•˜ë‚˜'' = 추천 사ì´íЏ = [http://www.codeproject.com/ Code Project] [http://www.devpia.com/ DevPia] = Document & View = == Document == í•˜ë‚˜ì˜ ë‹¨ìœ„ë¡œì„œ 다루어지는 í”„ë¡œê·¸ëžŒì•ˆì— ì¡´ìž¬í•˜ëŠ” 프로그램 ë°ì´í„°ì˜ ë ˆì´ë¸” ì •ë„로 ìƒê°í•˜ë©´ 편하다. MFCì—서는 ì´ë¥¼ CDocument ë¼ëŠ” í´ëž˜ìŠ¤ë¡œ ì œê³µí•˜ê³ í”„ë¡œê·¸ëž˜ë¨¸ëŠ” ì´ í´ëž˜ìŠ¤ë¥¼ ìƒì†ë°›ì•„서 ìžê¸°ê°€ 필요한 ë°ì´í„°í˜•ì„ ì •ì˜í•˜ê³ ê·¸ ë°ì´í„°ë¥¼ ì²˜ë¦¬í• ë©”ì†Œë“œë¥¼ 작성하게 ëœë‹¤. ì´ë¥¼ 사용하면 ë°ì´í„°ì˜ ì €ìž¥, ê²€ìƒ‰ì— ìžˆì–´ì„œ MFCê°€ ì œê³µí•˜ëŠ” 표준ì ì¸ ë©”ì¹´ë‹ˆì¦˜ì„ ì´ìš©í•˜ëŠ” ê²ƒì´ ê°€ëŠ¥í•´ì§„ë‹¤. ì‘용프로그램ì—서 document를 몇개를 다루ëŠëƒì— ë”°ë¼ì„œ SDI(single document interface), MDI(multiple document interface)로 구분하여 사용한다. == View == View는 ë„íë¨¼íŠ¸ì— ì¡´ìž¬í•˜ëŠ” ë°ì´í„°ì˜ 집합체를 우리가 ì›í•˜ëŠ” ë°©ì‹ìœ¼ë¡œ 표현하는 ë©”ì¹´ë‹ˆì¦˜ì´ êµ¬í˜„ëœ ê°ì²´ì´ë‹¤. document 와 마찬가지로 CViewë¼ëŠ” í´ëž˜ìŠ¤ë¥¼ ìƒì†í•˜ì—¬ 사용하게 ëœë‹¤. View는 윈ë„ìš°ì˜ ê°œë…으로 보아서 í”„ë ˆìž„ 윈ë„ìš° ì˜ì—ì•ˆì˜ í´ë¼ì´ì–¸íŠ¸ì— ì†í•˜ëŠ” viewë§Œì˜ ìœˆë„우안ì—서 표현ëœë‹¤. í•œê°œì˜ document ì— ëŒ€í•´ì„œ view는 여러개로 나누어서 만들어지는 ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤. ''excelì„ ìƒê°í•´ë³´ë©´ ë 것ì´ë‹¤. ë™ì¼í•œ 수치 ë°ì´í„°ë¥¼ ê°€ì§€ê³ ì„œë¡œë‹¤ë¥¸ 그래프, ê·¸ë¦¬ê³ í…Œì´ë¸”ì˜ í˜•ì‹ìœ¼ë¡œ 만들어내는 ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤.'' == Link == Document ê°ì²´ëŠ” ê´€ê³„ëœ ë·°ë“¤ì˜ í¬ì¸í„°ë¥¼ 리스트로 관리한다. 뷰는 ê´€ê³„ëœ ë„íë¨¼íŠ¸ì— ëŒ€í•œ í¬ì¸í„°ë¥¼ ì €ìž¥í• ë°ì´í„° 멤버 변수를 ê°–ê³ ìžˆë‹¤. í”„ë ˆìž„ 위ë„우는 현재 í™œì„±í™”ëœ ë·° ê°ì²´ì— 대한 í¬ì¸í„°ë¥¼ 갖는다. ì´ëŸ°ì‹ìœ¼ë¡œ 서로 묶여서 í•œê°œì˜ ìœˆë„우를 형성한다. === Document Template === ë„í먼트 템플릿 ê°ì²´ëŠ” 단순히 document ë§Œì„ ê´€ë¦¬í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆë‹¤. 그들 ê°ê°ê³¼ 관계ë˜ì–´ 있는 윈ë„우와 ë·°ë“¤ë„ í•¨ê»˜ 관리한다. 프로그램ì—서 ê°ê¸° 다른 ì¢…ë¥˜ì˜ ë„íë¨¼íŠ¸ì— ëŒ€í•´ì„œ í•˜ë‚˜ì”©ì˜ document templateì´ ì¡´ìž¬í•œë‹¤. 만약 ë™ì¼í•œ í˜•íƒœì˜ documentê°€ 2ê°œì´ìƒ 존재한다면 ê·¸ê²ƒë“¤ì„ ê´€ë¦¬í•˜ëŠ”ë°ì—는 í•˜ë‚˜ì˜ document templateë§Œ 있으면 ëœë‹¤. í•˜ë‚˜ì˜ document와 frame window는 í•œê°œì˜ document templateì— ì˜í•´ì„œ ìƒì„±ë˜ë©° view는 frame windowê°ì²´ê°€ ìƒì„±ë˜ë©´ì„œ ìžë™ìœ¼ë¡œ ìƒì„±ë˜ê²Œ ëœë‹¤. {{{~cpp DocumentTemplateClass : CSingleDocTemplate, CMultiDocTemplate}}} = SDI Application Wizard = '''ìƒì„±ëœ ì½”ë“œì˜ ì‹¤í–‰ 순서''' * {{{~cpp ì‘용프로그램 ê°ì²´ theApp ìƒì„±}}} * {{{~cpp MFCì— ì˜í•´ì„œ 기 ì œê³µë˜ëŠ” WinMain() 실행}}} * {{{~cpp WinMain() ì—서 InitInstance() 수행, document template, main frame window, document, view 를 ìƒì„±í•œë‹¤.}}} * {{{~cpp WinMain() ì—서 Run() 호출. Run()ì€ ë©”ì¸ ë©”ì‹œì§€ 루프를 실행하게ëœë‹¤. (APIì—서 WinProc를 ìƒê°í•´ë³´ë©´ ëœë‹¤.)}}} = ê´€ë ¨ë˜ì–´ì„œ ì§„í–‰ë˜ì—ˆë˜ 스터디들 = * [MFCStudy_2001] * [MFCStudy_2002_1] * [MFCStudy_2002_2] * [DebuggingSeminar_2005] = Related Page = * [MFC/CObject] * [MFC/CollectionClass] * [MFC/Control] * [MFC/DeviceContext] * [MFC/DynamicLinkLibrary] * [MFC/Print] * [MFC/RasterOperation] ---- [GUIProgramming] [MFC] [MFC프로그래ë°ì‹œìž‘하기]