E D R , A S I H C RSS

MoreMFC

DeleteMe) ๋” ดƒ ž‹ ˜ ฃผ๋„•˜— „–‰•  ˆ˜ —†„๊ฒƒ ๊ฐ™œผ๋ฉด, ๊ทธ๋ƒฅ Ž˜ดง€๋ฅผ ผ๋ฐ˜™”‹œ‚ค๋Š” ๊ฒƒด ข‹„๋“ฏ •จ.

Programming with Mfc - Jeff prosise (… š”•ฝ  •๋„ or …žฅ‚ฌ.. --;)


1. ๋ชฉ‘œ & žก๋‹ด

 „ž…„ ๊ฐ€ง€๊ณ  žˆ๋Š” ๊ด€๊ณ„๋กœ, ›„œ 70000›, •œ„œ 45000˜ ๊ฐ๊ธˆ€ ๋“ค•„š”๊ฐ€ —†—ˆŒ.

01.06.2002 ๋ถ€„„–‰ • ๊ฒƒ ๊ฐ™Œ. ›„๋”›„๋” ๋ณผ๊ณ„š, ๊ทธ๋Ÿฌ๋‚˜ source ๋Š” ๋‹คณ๋ณผ ๊ฒƒž„. -- v ('๋‹น—ฐ•œ๊ง€..')

๊ทธ๋ฆฌ๊ณ , petzold •„ฐŒ˜ …๋„ ๊ฐ™ด •ฝ๊ฐ„”ฉ ๋ณด•„ ๋‚˜๊ฐˆ๊ฒƒž„ ('˜ˆ „— ๋ณด๊ณ ‹ถ€ ๊ฒƒ๋“ค๋งŒ ๋ด„œ.. ๋ญ”†Œ๋ฆฐง€ ๋ชจ๋ฆ„. --a')

๊ทธ๋Ÿผ.. to be continue..

--; 1›” 11ผด ๋˜„œ•ผ ฝ๊ธฐ ‹œž‘.. --;

2. „–‰ ƒ™ฉ

2.1. 1›” 11ผ

  • œฝ ๊ดœ•œ ‹œž‘ด—ˆ๋‚˜?.. ˜ผž๋ณด๋ฉด ๊ธˆ๋ฐฉ ๋ณผ๊ฒƒ„.. (•ด„ •ˆ๋˜๋ฉด skipดง€.. ) ๊ทธ๋Ÿฐ๋ฐ.. š”๋ ‡๊ฒŒ  œผ๋‹ˆ๊นŒ.. ๋ชฌ•ด ๋จน๊ฒ ๋„ค.. ใ…‹ใ…‹ –ดจŒ๋“  ™”ดŒ…ด๋‹ค.. T-T

3. Programming with MFC

3.1. Chapter1. Hello, MFC

–ธ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ, Window programming„ • ๋•Œ ฒ˜Œ ๋“žฅ•˜๋Š” ˜ˆ œ๋Š”. Hello~ ‹œ๋ฆฌˆ๋‹ค. ๊ทธ source๋ฅผ †ต•ด MFC”„๋กœ๊ทธ๋žจ— ฒซ๋ฐœ„ ๋””๋”œ๊ฒƒด๋ฉฐ.. š”…— ๋‚˜˜จ œˆ๋„šฐ˜ ด๋ชจ €๋ชจ— ๊ด€•ด „ค๋ช…• ๊ฒƒด๋‹ค. ๋ญ .. ๋Œ€ถฉ๋Œ€ถฉ •ด๋‚˜๊ฐˆ ๊ฒƒดง€๋งŒ.. ๊ทธ๋Ÿผ.. windows programming˜ „ธ๊ณ„๋กœ. gogogo -- v


dos ‹œ ˆ˜  ˆฐจ‹ ”„๋กœ๊ทธ๋žจ˜ Šต๊ด€—  –€ ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ œ„•ด ด…๋„ —ญ‹œ •„ฃผž˜ œˆ๋„šฐ ”„๋กœ๊ทธ๋ž˜๋ฐด –ด๋–ป๊ฒŒ ๋‹ค๋ฅธง€ „ค๋ช…•ด ค€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ทธ๊ธ ๋‹ค‹œ ๋‹ค „ค๋ช…•  •„š”๋Š” —†๊ณ .. ๋–ก•˜๋‹ˆ ๊ทธ๋ฆผ •œžฅด๋ฉด ๋‹ค „ค๋ช… ๋ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿผ.. image!



image „ค๋ช….. -> ๋‚˜ค‘—.

..

๊ทธ๋ฆฌ๊ณ , 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"๋ฅผ ๊ทธ๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ด ”„๋กœ๊ทธ๋žจ˜ ๊ธฐ๋Šฅ(?)€ ๋ด๋‹ค.


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