. ApiEdit

Ime4 예제를 계속 작성하여 여러 줄 편집이 가능하도록 만들어보자. 이번에는 프로젝트 이름이 바뀌므로 완전히 새로 프로젝트를 만드는데 여기서 만드는 프로젝트로 상당 기간 동안 계속 실습을 진행할 것이므로 정확하게 만들도록 하자. 파일/새로 만들기/프로젝트 항목을 선택한다.

C:\ApiPractice\ApiEdit\ApiEdit 서브폴더 안에 ApiEdit라는 이름으로 빈 프로젝트를 만들었다. ApiEdit는 이 책에서 작성하는 텍스트 편집 컨트롤의 이름이다. ApiEdit.cpp 소스파일을 추가하고 Ime4.cpp의 내용을 그대로 복사해 붙여넣은 후 lpszClass만 다음과 같이 수정한다.

 

LPCTSTR lpszClass=TEXT("ApiEdit1");

 

이후 ApiEdit2, ApiEdit3식으로 ApiEdit9까지 작성하게 되는데 새로 프로젝트를 만들 때마다 윈도우 클래스 이름을 바꿔 주도록 하자. 다른 코드는 당장 수정할 필요가 없으며WinMain에서 메인 윈도우 크기만 작게 조정한다.

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

       ,LPSTR lpszCmdParam,int nCmdShow)

{

     ....

     hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,

          CW_USEDEFAULT,CW_USEDEFAULT,300,200,

          NULL,(HMENU)NULL,hInstance,NULL);

     ShowWindow(hWnd,nCmdShow);

     ....

 

분석과 테스트의 편의를 위해서 윈도우 크기를 좀 작게 만들어 두는 것이 유리하다. 스크롤 같은 기능을 테스트해보려면 문자열을 한 페이지 넘게 입력해야 하는데 화면이 너무 크면 테스트하기 번거롭다. 더구나 아직 파일 읽기나 붙여넣기 기능이 없기 때문에 직접 입력하는 수밖에는 다른 방법이 없다. 또한 에러 상황을 쉽게 재현해보고 코드를 바꿔 가며 효과를 확인해보려면 환경이 동일해야 하므로 강제적으로 고정된 크기를 지정하였다. 어디까지나 테스트의 편의를 위한 임시 크기이며 당분간은 이 크기를 계속 사용할 것이다.

프로젝트를 만든 후 두 가지 속성을 조정한다. IME 라이브러리를 사용하므로 imm32.lib가 필요한데 Debug 버전과 Release 버전 각각에 대해 이 라이브러리를 연결해야 한다. 프로젝트 속성 페이지에서 구성 콤보박스를 모든 구성으로 맞추어 놓은 후 추가 종속성에 imm32.lib를 입력하면 된다.

그리고 비주얼 C++ 7.0을 사용하고 있다면 C/C++/일반 속성에서 64비트 이식성 문제점 검색 옵션은 아니오로 변경한다. 6.0은 이 옵션을 조정할 필요가 없다.

이 옵션이 선택되어 있으면 int, long 등의 타입이 64비트로 해석되기 때문에 불필요한 경고가 많이 발생하게 된다. 64비트 API 발표를 염두에 두고, 미리 64비트 이식에 불리한 코드에 대해 경고를 하는 기능을 제공하는데 아직까지 Win64가 현실적으로 사용되기에는 거리가 좀 있으므로 이 경고는 무시하도록 하자.

이 상태에서 컴파일한 후 실행해보면 타이틀바의 제목이 다르고 메인 윈도우의 크기가 조금 작아졌을 뿐 Ime4와 기능적으로 완전히 동일하다. 하지만 이제 본격적으로 달라지기 시작할 것이다.