[C API] Window Form 생성하기

공부/C 언어  2012.10.21 09:00



안녕하세요 명월입니다.

이번 포스팅에서는 CAPI 만을 이용해서 Window Form 을 띄우는 방법에 대해 소개를 하겠습니다. 솔직히 C#강좌도 같이 하고 있지만 최근에는 C#으로 코딩을 하는게 생산성면에서 훨씬 높기 때문에 API 나 MFC 로 윈도우 폼을 짜는 일은 거의 없어지고 있습니다.

 

그러나 CAPI 는 C#도 그렇고 Java 로써도 그 언어의 뿌리(?) 라고 볼 수 있기 때문에 API에 대해서 알아두면 오히려 C#, JAva 를 이해함에 있어서 더 편합니다.

앞으로 강좌에 앞서 간단하게 윈도우 폼을 생성하는 것에 대해서 알아보도록 하겠습니다.

 

 

 

 

파일을 생성후에 코드를 입력하도록 하겠습니다.

 

  1 #include <Windows.h>
  2
  3 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  4 HINSTANCE g_hInst;
  5 LPCTSTR LpszClass=TEXT("Main");
  6 int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR LpszCmdParam,int nCmdShow){
  7 HWND hWnd;
  8 MSG Message;
  9 WNDCLASS WndClass;
10 g_hInst = hInstance;
11
12 WndClass.cbClsExtra = 0;
13 WndClass.cbWndExtra = 0;
14 WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
15 WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
16 WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
17 WndClass.hInstance = hInstance;
18 WndClass.lpfnWndProc = WndProc;
19 WndClass.lpszClassName = LpszClass;
20 WndClass.lpszMenuName = NULL;
21 WndClass.style = CS_HREDRAW | CS_VREDRAW;
22 RegisterClass(&WndClass);
23
24 hWnd = CreateWindow(LpszClass,LpszClass,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);
25 ShowWindow(hWnd,nCmdShow);
26
27 while(GetMessage(&Message,NULL,0,0)){
28 TranslateMessage(&Message);
29 DispatchMessage(&Message);
30 }
31 return (int)Message.wParam;
32 }
33 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam){
34 switch(iMessage){
35 case WM_DESTROY:
36 PostQuitMessage(0);
37 return;
38 }
39 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
40 }

 

 

여기서 소스 설명을 하자면 우리가 시작하는 Main 의 역할이 CAPI window는 WinMain이라는 시작점으로 시작 됩니다. 여기에서 인수 hInstance 는 프로그램 인스턴트입니다. 그 다음 인수는 hPrevInstance는 그냥 Null 사용하는 인수입니다.(옛날 16비트 시절에 사용하던 인수라는데 잘 모르겠습니다.다.) lpszCmdParam은 외부 입력 인수이고 nCmdShow 는 프로그램이 최초 실행 될때의 형태입니다.

 

그리고 C언어는 Java, C# 과 다르게 메시지 전처리기를 선언해야 합니다. 그것이 CallBack WndProc 입니다.앞으로 차차 이 부분을 분석하고 사용할 터이니 확인하고 가겠습니다.
그럼 결과 화면을 확인 하겠습니다.

 

 

참고 소스 : Blog20121020.zip


댓글 0개가 달렸습니다.
댓글쓰기