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.0194 sec