MinGW와 함께 배포되는 Codelite에서도 Win32 API 프로그래밍이 가능하지만, 프로젝트 생성 다이얼로그박스에서 Win32에 대한 항목이 없다. 그래도 MinGW에서 Win32 API 를 지원하고 있기 때문에 옵션 설정으로 간단히 Windows 프로그래밍을 할 수 있다.

  1. 메뉴에서 Workspace > New Project 를 클릭한다.
  2. Categories 에서 Console 을 선택하고,
  3. Simple Executable (g++) 을 선택한다.
  4. Project Name 을 원하는 이름으로 입력하고, OK 버튼을 클릭한다.
  5. 그러면 프로젝트가 생성되고, 이제 프로젝트의 옵션을 설정할 차례이다.
  6. 메뉴에서 Workspace > Open Active Project Settings… 를 클릭한다.
  7. 새로운 창이 뜨면, Linker를 클릭한다.
  8. 이제, Options 에 -mwindows 를 입력하거나,
  9. Libraries 에 user32;kernel32;gdi32 를 입력하고 OK버튼을 누른다.
  10. 이로써 설정이 완료되었으며, main.cpp 에 다음을 입력하고 빌드/실행해본다.
    #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));
    }
    
  11. 실제 빌드를 해보면 아래와 같이 링크되는 것을 확인할 수 있다.
    g++ -o ./Debug/Test01 ./Debug/main.o  "-L."  -mwindows
    or
    g++ -o ./Debug/Test01 ./Debug/main.o  "-L."  -luser32 -lkernel32 -lgdi32
    

'Language > C++' 카테고리의 다른 글

Visual Studio 2008 에서 zlib Win32 Static Library 생성하기  (0) 2009.12.15
ResEdit - Windows Resource Editor  (0) 2007.12.22

유명한 압축포맷인 GZIP을 만들고, 풀기 위한 라이브러리를 사용하기 위하여 소스를 다운로드 받아서 라이브러리로 만드는 방법을 정리해보았습니다. 실제 이용법도 조만간 정리해서 올리겠습니다. ^^

참고 : http://msdn.microsoft.com/en-us/library/ms235627.aspx, http://kaistizen.net/project/Zip/HowtoUseZlib.htm

  1. http://www.zlib.net/ 에서 zlib123.zip 파일을 다운로드 받아서, C:\Project\zlib123 에 파일들을 풀어 놓는다.
  2. 새로운 Static Library 프로젝트 생성하기
    - File 메뉴로부터, New를 선택하고, Project… 를 선택한다.
    - Project types 패널에서, Visual C++ 밑의 Win32를 선택한다.
    - Templates 패널에서, Win32 Console Application을 선택한다.
    - 프로젝트를 위한 이름(zlib)을 입력한다.
    - 솔루션 이름은 입력하지 않는다.
    - Location 은 C:\Project 로 설정한다.
    - 이제 OK 버튼을 누른다. Win32 Application Wizard 다이얼로그 박스의 Overview 페이지가 나오며, Next 버튼을 누른다.
    - Win32 Application Wizard 의 Application Settings 화면이 나오며, Application type 에서 Static library를 선택한다.
    - Win32 Application Wizard 의 Application Settings 화면에서, Additional options 에서 Precompiled header 를 언체크 한다.
    - 프로젝트를 생성하기 위해 Finish 버튼을 클릭한다.
  3. Solution Explorer 에서 Header Files → 오른쪽 버튼 → Add → Existing Item… 을 선택하여, C:\Project\zlib123 에 있는 모든 헤더파일을 선택하여 추가한다.
  4. Solution Explorer 에서 Source Files → 오른쪽 버튼 → Add → Existing Item… 을 선택하여, C:\Project\zlib123 에 있는 모든 C파일(example.c, minigzip.c 제외)을 선택하여 추가한다.
  5. 마지막으로, F7 (Build Solution) 을 눌러서 빌드를 실행하면, Debug 또는 Release 디렉토리에 zlib.lib 를 확인할 수 있다.

'Language > C++' 카테고리의 다른 글

Codelite로 Win32 프로그래밍하기  (0) 2011.01.31
ResEdit - Windows Resource Editor  (0) 2007.12.22

Visual C++ 2008 Express 에는 리소스에디터가 제외되어서 리소스를 텍스트로 편집해야 됩니다. 그렇지만, 누가 불편하게 텍스트로 처음부터 편집하려고 할까요? 결국, Free 로 배포되는 리소스에디터를 찾게 되었는데, 3개의 프로그램을 발견했습니다.

ResEdit, XN Resource Editor, Resource Hacker

이 중에서 ResEdit 를 사용하기로 했는데, Visual C++ 2008 에 포함되어 있는 녀석과 비슷합니다. ResEdit는 http://resedit.net 에서 다운로드 받을 수 있습니다. 이렇게 해서 리소스도 편하게 만들수 있게 되었습니다. MFC 도 Express Edition 에서 사용할 수 있으면 좋겠는데요. 너무 큰 욕심일까요? 가난한 개발자에게 더욱더 많은 공개 개발툴이 배포되길 빕니다... ^^

+ Recent posts