DeleteMe) λ μ΄μ μμ μ μ£Όλνμ μ§νν μ μμκ² κ°μΌλ©΄, κ·Έλ₯ νμ΄μ§λ₯Ό μΌλ°νμν€λ κ²μ΄ μ’μλ― ν¨.
Programming with Mfc - Jeff prosise (μ±
μμ½ μ λ or μ±
μ₯μ¬.. --;)
1. λͺ©ν & μ‘λ΄ ¶
μ μμ±
μ κ°μ§κ³ μλ κ΄κ³λ‘, μμ 70000μ, νμ 45000μ κ±°κΈμ λ€νμκ° μμμ.
01.06.2002 λΆν° μ§ν ν κ² κ°μ. νλ±νλ± λ³Όκ³ν, κ·Έλ¬λ source λ λ€μ³λ³Ό κ²μ. -- v ('λΉμ°νκ±°μ§..')
κ·Έλ¦¬κ³ , petzold μμ°μ μ± λ κ°μ΄ μ½κ°μ© 보μ λκ°κ²μ ('μμ μ λ³΄κ³ μΆμ κ²λ€λ§ λ΄μ.. λμλ¦°μ§ λͺ¨λ¦. --a')
κ·ΈλΌ.. to be continue..
--; 1μ 11μΌμ΄ λμμΌ μ½κΈ° μμ.. --;
01.06.2002 λΆν° μ§ν ν κ² κ°μ. νλ±νλ± λ³Όκ³ν, κ·Έλ¬λ source λ λ€μ³λ³Ό κ²μ. -- v ('λΉμ°νκ±°μ§..')
κ·Έλ¦¬κ³ , petzold μμ°μ μ± λ κ°μ΄ μ½κ°μ© 보μ λκ°κ²μ ('μμ μ λ³΄κ³ μΆμ κ²λ€λ§ λ΄μ.. λμλ¦°μ§ λͺ¨λ¦. --a')
κ·ΈλΌ.. to be continue..
--; 1μ 11μΌμ΄ λμμΌ μ½κΈ° μμ.. --;
2.1. 1μ 11μΌ ¶
- μ½ κ΄ν μμμ΄μλ?.. νΌμ보면 κΈλ°© λ³Όκ²μ.. (ν΄μ μλλ©΄ skipμ΄μ§.. ) κ·Έλ°λ°.. μλ κ² μ μΌλκΉ.. λͺ¬ν΄ λ¨Ήκ² λ€.. γ
γ
μ΄μ¨λ νμ΄ν
μ΄λ€.. T-T
3.1. Chapter1. Hello, MFC ¶
μΈμ λ κ·Έλ λ―, Window programmingμ ν λ μ²μ λ±μ₯νλ μμ λ. Hello~ μ리μ¦λ€. κ·Έ sourceλ₯Ό ν΅ν΄ MFCνλ‘κ·Έλ¨μ 첫λ°μ λλκ²μ΄λ©°.. μμ±
μ λμ¨ μλμ°μ μ΄λͺ¨μ λͺ¨μ κ΄ν΄ μ€λͺ
ν κ²μ΄λ€. λ .. λμΆ©λμΆ© ν΄λκ° κ²μ΄μ§λ§.. κ·ΈλΌ.. windows programmingμ μΈκ³λ‘. gogogo -- v
dos μμ μ μ μ°¨μ νλ‘κ·Έλ¨μ μ΅κ΄μ μ μ νλ‘κ·Έλλ¨Έλ₯Ό μν΄ μ΄μ± λ μμ μμ£Όμ μλμ° νλ‘κ·Έλλ°μ΄ μ΄λ»κ² λ€λ₯Έμ§ μ€λͺ ν΄ μ€λ€. κ·Έλ¬λ, κ·Έκ±Έ λ€μ λ€ μ€λͺ ν νμλ μκ³ .. λ‘νλ κ·Έλ¦Ό νμ₯μ΄λ©΄ λ€ μ€λͺ λ κ² κ°λ€. κ·ΈλΌ.. image!
dos μμ μ μ μ°¨μ νλ‘κ·Έλ¨μ μ΅κ΄μ μ μ νλ‘κ·Έλλ¨Έλ₯Ό μν΄ μ΄μ± λ μμ μμ£Όμ μλμ° νλ‘κ·Έλλ°μ΄ μ΄λ»κ² λ€λ₯Έμ§ μ€λͺ ν΄ μ€λ€. κ·Έλ¬λ, κ·Έκ±Έ λ€μ λ€ μ€λͺ ν νμλ μκ³ .. λ‘νλ κ·Έλ¦Ό νμ₯μ΄λ©΄ λ€ μ€λͺ λ κ² κ°λ€. κ·ΈλΌ.. image!
image μ€λͺ
.. -> λμ€μ.
..
κ·Έλ¦¬κ³ , MFCλ₯Ό νκΈ°μ μ κΌ νλ²μ© λμ€λ SDKλ‘ νλ windows programming. source.
MFCμ체λ μ΄λ° WinMainμ΄λ WndProc λ κ°μΆμ§λ§ λ°λ¨μμ μ΄λ° μμΌλ‘ λμκ°λ€λ κ²μ μ‘°κΈμ΄λΌλ μκ² νκΈ° μν΄μ ν¬ν¨. 무μν΄λ μκ΄ μμ. γ γ
...
κ·Έλ¦¬κ³ , κ·Έ λ€μμΌλ‘ μ§νλλ κ²μ΄. CMainWindowμ μλ OnPaintλΌλ ν¨μ. windowμ client μμμ 무μΈκ°λ₯Ό 그리λ ν¨μκ° νΈμΆλλ€. (κ·Έ μ μ μ΄κ² μ κ² λ§μ΄ μκ² μ§λ§... λ λ§€ν¬λ‘λ₯Ό ν΅ν΄ messagemap κ΄λ ¨ entryλΌλμ§.. μ΄λ°κ²λ€μ μ μΈν΄ μ£Όλ μμ .. --a) κ·Έλμ, DrawTextλ₯Ό μ΄μ©ν΄ νλ©΄ μ€μμ "Hello, MFC"λ₯Ό κ·Έλ¦°λ€. κ·Έλ¬λ©΄ μ΄ νλ‘κ·Έλ¨μ κΈ°λ₯(?)μ λμ΄λ€.
..
κ·Έλ¦¬κ³ , MFCλ₯Ό νκΈ°μ μ κΌ νλ²μ© λμ€λ SDKλ‘ νλ windows programming. source.
MFCμ체λ μ΄λ° WinMainμ΄λ WndProc λ κ°μΆμ§λ§ λ°λ¨μμ μ΄λ° μμΌλ‘ λμκ°λ€λ κ²μ μ‘°κΈμ΄λΌλ μκ² νκΈ° μν΄μ ν¬ν¨. 무μν΄λ μκ΄ μμ. γ γ
~cpp
// μ£Όμ μμ.. κ·Έλ₯.. WinMainκ³Ό WndProcκ° μꡬλλ§ λ³΄κ³ λμ΄ κ°μκΈΈ.. ν€ν€
// κΆκΈνλ©΄ μ°Ύμ 보μλΌμ°~
#include <windows.h>
int WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASS wc;
HWND hWnd;
MSG msg;
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = _T("MyWndClass");
RegisterClass (&wc);
hwnd = CreateWindow (_T("MyWndClass"), "SDK Application",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
HWND_DESKTOP,
NULL,
hInstance,
NULL ); // windowλ₯Ό λ§λ€μμ§λ§ 보μ΄μ§λ μλλ€.
ShowWindow (hWnd, nCmdShow); // window 보μ¬μ£ΌκΈ°. --;
UpdateWindow (hWnd);
while (GetMessage (&msg, NULL, 0, 0))
{ // 무ν 루νλ₯Ό λλ©΄μ message νμ μλ messageλ₯Ό κ°μ Έμ¨λ€.
// WM_QUIT messageκ° λ°μνλ©΄ GetMessageκ° 0μ λ°ννμ¬ νλ‘κ·Έλ¨ μ’
λ£.
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// μ΄λ κ² μ보μ΄λ κ³³μ WinMainκ³Ό WndProcλΌλ κ²μ΄ μ‘΄μ¬ν΄μ, messageλ₯Ό λ°μμ μ²λ¦¬νλ€.
// μμΈνκ²μ charles petzoldμ Programming WindowsλΌλ μ±
μ 보면 μμ² μλμ μλ€. --;
// κ·Έ μ±
λ λ€μ νλ² νν° λ΄μΌ κ² λ€. T-T μ²μμ μ λλ‘ λ³Όκ±Έ.. λ€μ λ³΄κ² λλ€λ.. T-T
κ·ΈλΌ μ΄μ μ΄ μ±
μμ μ²μ λμ€λ MFC programming sourceλ₯Ό.. κ³΅κ° νλ€. Dialog basedλ‘ νλ‘μ νΈλ₯Ό μ°ν Dialogμ κ΄ν classλ projectμμ λΊν Appν΄λμ€λ΄μ μ΄ sourceλ₯Ό μ³μ£Όλ©΄ λ κ²μ΄λ€. - μ κΈ° νκ²λ App classμ MainWindowν΄λμ€λ§ μλ€. μ΄λ° sourceλ μ²μ λ΄μ μμ νμ§λ§, MFCμμ μ 곡ν΄μ£Όλ source보λ€λ κΉλν΄ λ³΄μλ€.-~cpp
// hello.h
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
};
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
protected:
afx_msg void OnPaint ();
DECLARE_MESSAGE_MAP ()
};
// hello.cpp
#include <afxwin.h>
#include "Hello.h"
CMyApp myApp;
/////////////////////////////////////////////////////////////////////////
// CMyApp member functions
// νλ‘κ·Έλ¨μ μ΄κΈ°ν ν μ μλ κ°μ₯ μ μ ν μ₯μ. --a
// CWinApp::InitInstanceλ₯Ό overrideν κ°μν¨μμ΄λ€.
BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow; // μλμ° μμ±
m_pMainWnd->ShowWindow (m_nCmdShow); //
m_pMainWnd->UpdateWindow ();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functions
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_PAINT ()
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
{
Create (NULL, _T ("The Hello Application"));
}
void CMainWindow::OnPaint ()
{
CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
λ‘νλ sourceλ₯Ό 보면 μ΄λ»κ² λμκ°λ κ±°μΌ.. --; λΌλ μκ°μ΄ λ λ€.. λλ μλͺ¨λ₯Έλ€. κ·Έλ°λ° κ°μ₯ μ€μνκ²μ globalμμμ myAppλΌλ λ³μκ° μ μΈλμ΄ μλ€λ μ¬μ€μ΄λ€. myApp λΌλ instanceκ° μ΄ νλ‘κ·Έλ¨μ instanceμ΄λ€. --a (μ΅μ΄μ νλ‘κ·Έλ¨μΌλ‘ μΈμ€ν΄μ€ν..) κ·Έλ¦¬κ³ , CWinAppλ₯Ό μμν CMyAppμ μλ μ μΌν ν¨μ initInstance μμ μ€μ windowλ₯Ό λ§λ€μ΄μ€λ€.(InitInstanceν¨μλ μμ© νλ‘κ·Έλ¨μ΄ μ²μ μκΈΈ λ, 곑 windowκ° μμ±λκΈ°μ , μμ© νλ‘κ·Έλ¨μ΄ μμν λ°λ‘ λ€μμ νΈμΆλλ€) μ΄ λΆλΆμμ CMainWindowμ instanceλ₯Ό λ§λ€μ΄ λ©€λ² λ³μμΈ m_pMainWndλ‘ pointingνλ€. μ΄μ windowλ μμ± λμλ€. κ·Έλ μ§λ§, κΈ°μ΅ν΄μΌ ν κ²μ΄ μμ§ windowλ 보μ΄μ§ μλλ€λ μ¬μ€μ΄λ€. κ·Έλμ, CMainWindowμ pointer(m_pMainWindow)λ₯Ό ν΅ν΄μ ShowWindowμ UpdateWindowλ₯Ό νΈμΆν΄ μ€λ€. κ·Έλ¦¬κ³ TRUEλ₯Ό return ν¨μΌλ‘μ¨ λ€μ μμ
μΌλ‘ μ§ν ν μ μκ² ν΄μ€λ€.... ν. μμλΌ λμλ¦°μ§ νλλ λͺ¨λ₯΄κ² λ€~ μΊ¬μΊ¬.. to be continue.....
κ·Έλ¦¬κ³ , κ·Έ λ€μμΌλ‘ μ§νλλ κ²μ΄. CMainWindowμ μλ OnPaintλΌλ ν¨μ. windowμ client μμμ 무μΈκ°λ₯Ό 그리λ ν¨μκ° νΈμΆλλ€. (κ·Έ μ μ μ΄κ² μ κ² λ§μ΄ μκ² μ§λ§... λ λ§€ν¬λ‘λ₯Ό ν΅ν΄ messagemap κ΄λ ¨ entryλΌλμ§.. μ΄λ°κ²λ€μ μ μΈν΄ μ£Όλ μμ .. --a) κ·Έλμ, DrawTextλ₯Ό μ΄μ©ν΄ νλ©΄ μ€μμ "Hello, MFC"λ₯Ό κ·Έλ¦°λ€. κ·Έλ¬λ©΄ μ΄ νλ‘κ·Έλ¨μ κΈ°λ₯(?)μ λμ΄λ€.










