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 에 대한 부분들도 언급할것입니다.
Leave a Reply
댓글을 달기 위해서는 로그인해야합니다.