MFC 개발 환경에서는 기본적으로 Grid(또는 Data Grid)를 지원하지 않습니다.
그렇게 하여 많은 개발자들로 인해 MFC에서 Custom Control 형식으로 많은 Grid Control이 나왔지만 그 중에서 가장 많이 쓰이는 Grid Control 중 하나인 "MFC Grid Control"을 소개합니다.
간단한 사용법을 알아봅시다.
소스 다운로드 및 기본 설정
홈페이지에서 "Download Grid Control Source and Demo"를 클릭하여 다운받습니다.
우리에게 필요한 폴더는 GridCtrl_src
와 NewCellTypes
입니다.
(NewCellTypes는 Grid Control 에서 Cell에서 사용할 수 있는 새로운 타입의 Cell입니다.)
(사용 하신다면 필요하고 사용하지 않으신다면 필요하지 않습니다.
MFC 프로젝트를 만들고 위에서 받은 두개의 폴더를 가지고 와서 소스에 추가 합니다.
이렇게 추가 후 바로 빌드를 하게 되면
많은 오류를 도출하게 됩니다.
먼저 설정을 해야합니다.
구성 속성 - C/C++ - 일반 - 추가 포함 디렉터리
에 .\
을 추가합니다.
이제 소스 코드를 수정할 차례입니다.
이 CGridCtrl
이 만들어지는 시기에는 CMemDC
라는 클래스가 존재하지 않았었나봅니다.
그래서 지금은 API(afxcontrolbarutil.h)
에 공식으로 들어있으나 이 컨트롤에서는 이것을 사용하기 위해 이름을 바꾸어줍니다.
CMemDC.h
파일을 열어서
이름 바꾸기를 하여 MyCMemDC
또는 자신이 원하는 이름
으로 바꾸어줍니다.
그 후 빌드를 하게 되면
이렇게 4가지의 주요 오류가 뜹니다.
먼저 GetVersionExW
는 사실 지금은 Deprecated
가 되어 사용하지 않는 것이 좋으나 여기서는 그냥 무시하도록
#pragma warning(disable:4996)
으로 무시하도록 합니다.
각 해당 함수 위쪽에 넣어줍니다.
// GridCtrl.cpp 파일
#pragma warning(disable:4996)
UINT GetMouseScrollLines()
{
// 생략 ...
}
// GridCell.cpp 파일
#pragma warning(disable:4996)
CGridDefaultCell::CGridDefaultCell()
{
// 생략 ...
}
그 후에 GridCtrl.cpp
의 7번째 줄에 슬래시(/)
를 하나 더 붙여줍니다.
이후에 빌드를 하게 되면
최신 버전의 MSVC를 사용하시는 분은 ON_WM_TIMER
의 인자 알람이 뜰 것이고 그렇지 않으신다면 안뜨실 겁니다.
이게 최신으로 와서 OnTimer
의 인자가 UINT
에서 UINT_PTR
로 바뀌었습니다.
void CGridCtrl::OnTimer(UINT nIDEvent)
↓↓↓↓↓↓
void CGridCtrl::OnTimer(UINT_PTR nIDEvent)
// 헤더 파일도 동일하게 UINT_PTR로 인자를 바꾸어줍니다.
이렇게 바꾸고 빌드를 하면
이렇게 빌드에 성공하여 사용할 준비를 마치게 됩니다.
다음 시간에는 기본 사용법에 대해서 알아보도록 합니다.
'Study > MFC' 카테고리의 다른 글
[MFC] MFC 에서 Grid를 사용해보자 2 - 생성 및 설정 (MFC Grid Control) (2) | 2022.11.15 |
---|---|
[MFC/Win32 API] 파일의 생성 시간, 접근 시간, 쓰기 시간 (2) | 2022.10.15 |
[MFC] ListBox 컨트롤 (리스트박스) (0) | 2022.10.13 |
[MFC] Radio Button 컨트롤 (라디오 버튼) (0) | 2022.09.03 |
[MFC] Check Box 컨트롤 (체크 박스) (0) | 2022.09.03 |