카테고리도 없고,
Syntax Highlight 도 적용이 안되고.
서식 기능도 없고.
도통 답이 없는 이쁘기만 한 이글루스에서 티스토리로 이동 했습니다.
C++ 의 새로운 표준과, MFC, Python, 그리고 프로그래머의 생산성을 향상시키는 여러 도구들에 대해서 알고싶다면
http://anster.tistory.com 로!!!
01: // Sample.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
02: //
03:
04: #include "stdafx.h"
05:
06: #include <iostream>
07:
08: class High
09: {
10: int a;
11:
12: public:
13: virtual void func1(void)
14: {
15: std::cout << "High::func1" << std::endl;
16: }
17:
18: virtual void func2(void)
19: {
20: std::cout << "High::func2" << std::endl;
21: }
22: };
23:
24: class Middle : public High
25: {
26: int b;
27:
28: public:
29: virtual void func1(void)
30: {
31: std::cout << "Middle::func1" << std::endl;
32: }
33:
34: virtual void func3(void)
35: {
36: std::cout << "Middle::func3" << std::endl;
37: }
38: };
39:
40: class Low : public Middle
41: {
42: int c;
43:
44: public:
45: virtual void func1(void)
46: {
47: std::cout << "Low::func1" << std::endl;
48: }
49:
50: virtual void func3(void)
51: {
52: std::cout << "Low::func3" << std::endl;
53: }
54:
55: virtual void func4(void)
56: {
57: std::cout << "Low::func4" << std::endl;
58: }
59: };
60:
61: int _tmain(int argc, _TCHAR* argv[])
62: {
63:
64: High* cHigh = new High();
65: cHigh->func1();
66:
67: Middle* cMiddle = new Middle();
68: cMiddle->func3();
69:
70: Low* cLow = new Low();
71: cLow->func3();
72:
73: return 0;
74: }
75:
01:
02: #include <windows.h>
03: #include <tchar.h>
04:
05: #ifndef SIMPLE_COBJECT_H
06: #define SIMPLE_COBJECT_H
07:
08: LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
09:
10: class CObject
11: {
12: protected:
13: static TCHAR szAppName[];
14: HWND m_hwnd;
15: MSG m_msg;
16: WNDCLASSEX m_wndclass;
17:
18: public:
19: void InitInstance(HINSTANCE hInstance, LPSTR szCmdLine, int iCmdShow);
20: void Run(void);
21: WPARAM ExitInstance(void);
22: };
23:
24:
25:
26: #endif
01:
02: #include "CObject.h"
03: #include "CView.h"
04:
05: TCHAR CObject::szAppName[] = _T("Sample Program");
06:
07: extern CView app;
08:
09: static CViewFuncPointer fpCViewGlobal;
10:
11:
12: void CObject::InitInstance(HINSTANCE hInstance, LPSTR szCmdLine, int iCmdShow)
13: {
14: m_wndclass.cbSize = sizeof(m_wndclass);
15: m_wndclass.style = CS_HREDRAW | CS_VREDRAW;
16: m_wndclass.lpfnWndProc = WndProc;
17: m_wndclass.cbClsExtra = 0;
18: m_wndclass.cbWndExtra = 0;
19: m_wndclass.hInstance = hInstance;
20: m_wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
21: m_wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
22: m_wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
23: m_wndclass.lpszMenuName = NULL;
24: m_wndclass.lpszClassName = szAppName;
25: m_wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
26:
27: RegisterClassEx ( &m_wndclass );
28:
29: m_hwnd = CreateWindow ( szAppName, _T("Simple"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
30: CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL );
31:
32: ShowWindow(m_hwnd, iCmdShow);
33: UpdateWindow(m_hwnd);
34: }
35:
36: void CObject::Run(void)
37: {
38: while ( GetMessage(&m_msg, NULL, 0, 0))
39: {
40: TranslateMessage(&m_msg);
41: DispatchMessage(&m_msg);
42: }
43: }
44:
45: WPARAM CObject::ExitInstance(void)
46: {
47: return m_msg.wParam;
48: }
49:
50: int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd )
51: {
52: app.InitInstance(hInstance, lpCmdLine, nShowCmd);
53: app.Run();
54: return app.ExitInstance();
55: }
56:
57: LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
58: {
59: UINT uMessage = 0;
60:
61: while ( CView::messageMap[uMessage].iMsg != 0 )
62: {
63: if ( iMsg == CView::messageMap[uMessage].iMsg )
64: {
65: fpCViewGlobal = CView::messageMap[uMessage].fp;
66: (app.*fpCViewGlobal)();
67: return 0;
68: }
69:
70: uMessage++;
71: }
72:
73: return DefWindowProc(hwnd, iMsg, wParam, lParam);
74: }
01:아래는 CView.cpp 의 소스
02: #ifndef SIMPLE_CVIEW_H
03: #define SIMPLE_CVIEW_H
04:
05: #include <windows.h>
06: #include <tchar.h>
07:
08: class CView;
09:
10: typedef void (CView::*CViewFuncPointer)();
11: typedef struct tagMessageMap {
12: UINT iMsg;
13: CViewFuncPointer fp;
14: } MessageMap;
15:
16: class CView : public CObject
17: {
18:
19: public:
20: //Message Map
21: static MessageMap messageMap[];
22:
23: public:
24: //Event Handler
25: void OnCreate(void);
26: void OnDraw(void);
27: void OnDestroy(void);
28: void OnLButtonDown(void);
29: };
30:
31:
32: #endif
01: #include "CObject.h"
02: #include "CView.h"
03:
04: CView app;
05:
06: MessageMap CView::messageMap[] = {
07: {WM_CREATE, &CView::OnCreate},
08: {WM_PAINT, &CView::OnDraw},
09: {WM_DESTROY, &CView::OnDestroy},
10: {WM_LBUTTONDOWN, &CView::OnLButtonDown},
11: {0, NULL }
12: };
13:
14: void CView::OnCreate()
15: {
16:
17: }
18:
19: void CView::OnDraw()
20: {
21: PAINTSTRUCT ps;
22: RECT rect;
23: HDC hdc;
24:
25: hdc = BeginPaint(m_hwnd, &ps);
26: GetClientRect(m_hwnd, &rect);
27: DrawText(hdc, _T("Hello Windows!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
28: EndPaint(m_hwnd, &ps);
29: }
30:
31: void CView::OnDestroy()
32: {
33: PostQuitMessage(0);
34: }
35:
36: void CView::OnLButtonDown(void)
37: {
38: MessageBox(m_hwnd, _T("Button Down!"), _T("Hello"), MB_OK);
39: }
최근 덧글