E D R , A S I H C RSS

Microsoft Foundation Classes

1. MFC?

Microsoft Foundation Classes λΌ μ„μ—¬μ„œ λΆ€λ₯Έλ‹€. κΈ°μ •μ˜λœ 클래슀의 μ§‘ν•©μœΌλ‘œ Visual C++이 이 ν΄λž˜μŠ€λ“€μ„ κ°€λ°˜μœΌλ‘œ ν•˜κ³  μžˆλ‹€. 이 클래슀 ꡰ은 MS Windows APIλΌ λž˜ν•‘(Wrapping)ν•˜μ—¬μ„œ 객체지ν–₯적 μ ‘κ·Όλ²•μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ„λ‘ μ„κ³„λ˜μ–΄ μžˆλ‹€. μ˜ˆμ „μ—λŠ” λ³Όλžœλ“œμ—μ„œ 내놓은 OWL(Object Windows Library)λΌλŠ” 것도 μ“°μ˜€λ˜ 걸둜 μ•„λŠ”λ°... -_-; μ§€κΈˆμ€ μ–΄λ””λ‘œ κ°€λ²„λ ΈλŠ”μ§€ λͺ¨λ₯Έλ‹€. γ…‹γ…‹

2. MFC notation

MFC의 ν΄λž˜μŠ€λ“€μ€ CDocument, CView와 같이 C둜 μ‹œμž‘ν•˜λŠ” 이름을 κ°–λŠ”λ‹€. 데이터 λ©€λ²„λ“€μ—λŠ” m_ λΌλŠ” μ ‘λ‘μ–΄λΌ λΆ™μ—¬μ„œ λ§Œλ“€μ–΄μ Έ μžˆλ‹€. λ³€μˆ˜μ˜ μ΄λ¦„μ•žμ— p, i, l, h 등을 μ΄μš©ν•΄μ„œ κ·Έ μ’…λ₯˜λΌ λ³€μˆ˜μ˜ μ΄λ¦„μœΌλ‘œ μΆ”μ •κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” ν—κ°€λ¦¬μ•ˆν‘œκΈ°λ²•μ„ μ΄μš©ν•œλ‹€. μ΄λŠ” κ³Όκ±° Cν™˜κ²½ν•˜μ—μ„œ ν˜•μ‹ 검사기λŠ₯의 λΆ€μž¬λ‘œ μΈν•œ μ—λŸ¬λΌ λ§‰κΈ°μœ„ν•΄ κ³ μ•ˆλœ 츑면이 크기 λ•Œλ¬Έμ— C++에 λ“€μ–΄μ™€μ„œλŠ” λ°˜λ“œμ‹œ ν•„μš”ν•œ ν‘œκΈ°λ²•μ€ μ•„λ‹ˆλ‹€.

3. 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둜 μœˆλ„μš°λΌ λ§Œλ“€λ•Œλ³΄λ‹€ κ°„νŽΈν•˜κ²Œ μž‘μ„±ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.
simple_mfc_window_showing.JPG

''컴파일 ν•΄λ³΄κ³ μž ν•˜λŠ” 뢄듀은 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

4. μΆ”μ²œμ„œμ 

[ISBN-1572316950] [ISBN-0201407213] [ISBN-8931427301] [ISBN-0764543881]
인내심없이 λ²ˆμ—­μ„œ 읽으면 μ•ˆλ˜λŠ” μ±…. Wrox BegVC++6 λ‚΄μš©μ˜ 진행방법은 Ivor 할아버지 λ‹΅κ²Œ 재λΈμžˆλ‹€.
[ISBN-1556227043] [ISBN-1572313498] [ISBN-0672314924] [ISBN-0201634465]
Com/Dcom PrimerPlus λŠ” ν˜„μž¬ 절판. κ³½μš©μž¬μ”¨κ°€ 이름을 λ‚ λ¦¬κ²Œ 된 계기가 된 μ•„μ£Ό 잘 λ²ˆμ—­λœ μ±…μ€‘μ˜ ν•˜λ‚˜

5. μΆ”μ²œ μ‚¬μ΄νŠΈ

6. Document & View

6.1. Document

ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œμ„œ λ‹€λ£¨μ–΄μ§€λŠ” ν”„λ‘œκ·ΈλžŒμ•ˆμ— μ‘΄μž¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨ λ°μ΄ν„°μ˜ λ ˆμ΄λΈ” μ •λ„λ‘œ μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€. MFCμ—μ„œλŠ” μ΄λΌ CDocument λΌλŠ” 클래슀둜 μ œκ³΅ν•˜κ³  ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 이 ν΄λž˜μŠ€λΌ μƒμ†λ°›μ•„μ„œ μžκΈ°κ°€ ν•„μš”ν•œ λ°μ΄ν„°ν˜•μ„ μ •μ˜ν•˜κ³  κ·Έ λ°μ΄ν„°λΌ μ²˜λ¦¬ν•  λ©”μ†Œλ“œλΌ μž‘μ„±ν•˜κ²Œ λœλ‹€.
μ΄λΌ μ‚¬μš©ν•˜λ©΄ λ°μ΄ν„°μ˜ μ €μž₯, 검색에 μžˆμ–΄μ„œ MFCκ°€ μ œκ³΅ν•˜λŠ” ν‘œμ€μ μΈ λ©”μΉ΄λ‹ˆμ¦˜μ„ μ΄μš©ν•˜λŠ” 것이 κ°€λŠ₯해진닀.

μ‘μš©ν”„λ‘œκ·Έλž¨μ—μ„œ documentλΌ λͺ‡κ°œλΌ λ‹€λ£¨λŠλƒμ— λ”°λΌμ„œ SDI(single document interface), MDI(multiple document interface)둜 κ΅¬λΆ„ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

6.2. View

ViewλŠ” λ„νλ¨ΌνŠΈμ— μ‘΄μž¬ν•˜λŠ” λ°μ΄ν„°μ˜ μ§‘ν•©μ²΄λΌ μš°λ¦¬κ°€ μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•˜λŠ” λ©”μΉ΄λ‹ˆμ¦˜μ΄ κ΅¬ν˜„λœ 객체이닀. document 와 λ§ˆμ°¬κ°€μ§€λ‘œ CViewλΌλŠ” ν΄λž˜μŠ€λΌ μƒμ†ν•˜μ—¬ μ‚¬μš©ν•˜κ²Œ λœλ‹€. ViewλŠ” μœˆλ„μš°μ˜ κ°œλ…μœΌλ‘œ λ³΄μ•„μ„œ ν”„λ ˆμž„ μœˆλ„μš° μ˜μ—­μ•ˆμ˜ ν΄λΌμ΄μ–ΈνŠΈμ— μ†ν•˜λŠ” view만의 μœˆλ„μš°μ•ˆμ—μ„œ ν‘œν˜„λœλ‹€. ν•œκ°œμ˜ document 에 λŒ€ν•΄μ„œ viewλŠ” μ—¬λŸ¬κ°œλ‘œ λ‚˜λˆ„μ–΄μ„œ λ§Œλ“€μ–΄μ§€λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.
excel을 생각해보면 될 것이닀. λ™μΌν•œ 수치 λ°μ΄ν„°λΌ κ°€μ§€κ³  μ„œλ‘œλ‹€λ₯Έ κ·Έλž˜ν”„, 그리고 ν…Œμ΄λΈ”μ˜ ν˜•μ‹μœΌλ‘œ λ§Œλ“€μ–΄λ‚΄λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

6.3. Link

Document κ°μ²΄λŠ” κ΄€κ³„λœ λ·°λ“€μ˜ ν¬μΈν„°λΌ λ¦¬μŠ€νŠΈλ‘œ κ΄€λ¦¬ν•œλ‹€. λ·°λŠ” κ΄€κ³„λœ λ„νλ¨ΌνŠΈμ— λŒ€ν•œ ν¬μΈν„°λΌ μ €μž₯ν•  데이터 멀버 λ³€μˆ˜λΌ κ°–κ³  μžˆλ‹€. ν”„λ ˆμž„ μœ„λ„μš°λŠ” ν˜„μž¬ ν™œμ„±ν™”λœ λ·° 객체에 λŒ€ν•œ ν¬μΈν„°λΌ κ°–λŠ”λ‹€. μ΄λŸ°μ‹μœΌλ‘œ μ„œλ‘œ λ¬Άμ—¬μ„œ ν•œκ°œμ˜ μœˆλ„μš°λΌ ν˜•μ„±ν•œλ‹€.

6.3.1. Document Template

λ„νλ¨ΌνŠΈ ν…œν”Œλ¦Ώ κ°μ²΄λŠ” λ‹¨μˆœνžˆ document λ§Œμ„ κ΄€λ¦¬ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€. κ·Έλ“€ 각각과 κ΄€κ³„λ˜μ–΄ μžˆλŠ” μœˆλ„μš°μ™€ 뷰듀도 ν•¨κ»˜ κ΄€λ¦¬ν•œλ‹€. ν”„λ‘œκ·Έλž¨μ—μ„œ 각기 λ‹€λ₯Έ μ’…λ₯˜μ˜ λ„νλ¨ΌνŠΈμ— λŒ€ν•΄μ„œ ν•˜λ‚˜μ”©μ˜ document template이 μ‘΄μž¬ν•œλ‹€. λ§Œμ•½ λ™μΌν•œ ν˜•νƒœμ˜ documentκ°€ 2κ°œμ΄μƒ μ‘΄μž¬ν•œλ‹€λ©΄ 그것듀을 κ΄€λ¦¬ν•˜λŠ”λ°μ—λŠ” ν•˜λ‚˜μ˜ document template만 있으면 λœλ‹€.
ν•˜λ‚˜μ˜ document와 frame windowλŠ” ν•œκ°œμ˜ document template에 μ˜ν•΄μ„œ μƒμ„±λ˜λ©° viewλŠ” frame window객체가 μƒμ„±λ˜λ©΄μ„œ μžλ™μœΌλ‘œ μƒμ„±λ˜κ²Œ λœλ‹€.
~cpp DocumentTemplateClass : CSingleDocTemplate, CMultiDocTemplate

7. SDI Application Wizard

μƒμ„±λœ μ½”λ“œμ˜ μ‹€ν–‰ μˆœμ„œ
  • ~cpp μ‘μš©ν”„λ‘œκ·Έλž¨ 객체 theApp 생성
  • ~cpp MFC에 μ˜ν•΄μ„œ κΈ° μ œκ³΅λ˜λŠ” WinMain() μ‹€ν–‰
  • ~cpp WinMain() μ—μ„œ InitInstance() μˆ˜ν–‰, document template, main frame window, document, view λΌ μƒμ„±ν•œλ‹€.
  • ~cpp WinMain() μ—μ„œ Run() 호좜. Run()은 메인 λ©”μ‹œμ§€ λ£¨ν”„λΌ μ‹€ν–‰ν•˜κ²Œλœλ‹€. (APIμ—μ„œ WinProcλΌ μƒκ°ν•΄λ³΄λ©΄ λœλ‹€.)

8. κ΄€λ ¨λ˜μ–΄μ„œ μ§„ν–‰λ˜μ—ˆλ˜ μŠ€ν„°λ””λ“€

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:45
Processing time 0.0530 sec