[VC++] 시리얼 통신 프로그램 만들기[1-3] – MFC Frame Work

C 콘솔 프로그래밍에서 아마도 가장 간단하게 프로세스를 구현한 코드는 아래와 같을 것입니다.

 


void main(void)
{
    while(0){};
}

 

그러나 Windows API 에서 하나의 윈도우를 띄우기 위한 프로세스를 구현한 최소코드는 아래와 같습니다.

#include <WINDOWS.H>;

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="First";

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
		  ,LPSTR lpszCmdParam,int nCmdShow)
{
	HWND hWnd;
	MSG Message;
	WNDCLASS WndClass;
	g_hInst=hInstance;

	WndClass.cbClsExtra=0;
	WndClass.cbWndExtra=0;
	WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
	WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	WndClass.hInstance=hInstance;
	WndClass.lpfnWndProc=(WNDPROC)WndProc;
	WndClass.lpszClassName=lpszClass;
	WndClass.lpszMenuName=NULL;
	WndClass.style=CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&WndClass);

	hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
		  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
		  NULL,(HMENU)NULL,hInstance,NULL);
	ShowWindow(hWnd,nCmdShow);

	while(GetMessage(&Message,0,0,0)) {
		TranslateMessage(&Message);
		DispatchMessage(&Message);
	}
	return Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	switch(iMessage) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

 

윈도우 프로그램을 만들게 되면 위와같이 윈도우를 정의 및 생성해주고 메세지 처리를 위한 콜백함수를 등록해주며 메세지루프를 만들어줍니다.
이것이 윈도우 프로그래밍을 위해 작성해 줘야 할 가장 기본적인 골격입니다.
이와 같은 내용은 대부분의 Visual C++ 관련책자에서 다루는 내용이니 참고하시기 바랍니다.

MFC 윈도우 프로그램 제작을 위한 프로젝트를 생성하게 되면 위와같은 전체적 구조는 MFC Frame Work 라고 하는 일종의 코드생성기에 의해 작성된 소스로 제공되게 됩니다.
물론 이 구조는 위에 정리된 코드 그대로가 아닌 OOP 가 적용되어져 MFC 라이브러리로서 제공되며 프로그래밍 편의를 위한 기능들이 많이 덧붙여집니다.
이는 프로그래머가 생성하려는 윈도우 어플리케이션의 기능에 맞게 마법사에 의해 선택될 수 있는, 크게 두가지 형태로 제공되어지는데 첫번째는 Document/View 구조와 다른하나는 Dialog Based 구조입니다.

Document/View 구조는 MainFrame Window 에 여럿의 Child Window 가 속할 수 있으며 프린트 기능을 포함하여 화면에 출력을 담당하는 View 구조와 데이터 관리의 일관성을 담당하는 Document 구조로 나뉘며 Microsoft Word 나 기타 프린트 기능이 있는 프로그램들이 대부분 이 구조로 생성된 프로그램입니다.

Dialog Based 구조는 다이얼로그 타입의 윈도우가 기본적으로 생성되며 간단한 프로그램을 만들때 흔히 쓰여지고 대표적으로 윈도우 관리자 프로그램이 이 구조로 만들어진 프로그램들 중 하나입니다.

Visual C++ 윈도우 프로그래밍을 처음 접하게 되면 프로젝트 마법사가 생성해 주는 이 MFC Frame Work 구조의 윤곽에 대한 이해 부족으로 어려움을 겪습니다.
또한 MFC 프로그래머라도 이 구조를 속속들이 완전히 이해하는데는 경험상 다르겠지만 몇년이 걸려도 어려운 것입니다.

다음회 부터 MFC 시리얼 통신 프로그램 제작을 진행하겠습니다.
그리고 진행하면서 MFC Frame Work 에 대한 부분들도 언급할것입니다.

 

 

이 글을 공유하기:

Be the first to comment

Leave a Reply