리스트콘트롤의 헤더에서 멀티라인 지원하는 클래스.
http://www.codeproject.com 에 있는 자료를 필요에 의해 짜집기 및 수정해서 만들었다.
사용법은 간단하다.
// 헤더파일 추가
#include "ListCtrlEx.h"
CListCtrl 멤버변수를 CListCtrlEx로 바꿔주고...
// 헤더 추가
LV_COLUMN lvcolumn;
lvcolumn.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_CENTER;
lvcolumn.cx = 0;
lvcolumn.pszText = " ";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);
lvcolumn.fmt = LVCFMT_RIGHT;
lvcolumn.cx = 100;
lvcolumn.pszText = "공사비용\n(만원)";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);
lvcolumn.fmt = LVCFMT_RIGHT;
lvcolumn.cx = 80;
lvcolumn.pszText = "공정률\n(%)";
m_ctrlList.InsertColumn(nIdx++, &lvcolumn);
// 모든 헤더가 추가된 후 마지막에 한줄 추가
m_ctrlList.Initializing(320, "견명조");
위와 같이 하면 헤더에 멀티라인 적용되며, 데이터는 한줄 번갈아가며 배경색이 적용된다.
헤더(컬럼) 크기 고정하기
BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
/*
//사이즈가 80 이하 안되게 만든다.
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if((pHDN->hdr.code == HDN_ITEMCHANGINGW || pHDN->hdr.code == HDN_ITEMCHANGINGA)
&& pHDN->pitem->cxy < 80)
{
*pResult = TRUE; // disable change
return TRUE; // Processed message
}*/
/* // 컬럼 사이즈 변경 못하게 만든다.
// 모든 칼럼.
switch (((NMHDR*)lParam)->code)
{
case HDN_BEGINTRACKW:
case HDN_BEGINTRACKA:
*pResult = TRUE; // disable tracking
return TRUE; // Processed message
default: break;
}
// 특정 칼럼.
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
if((pHDN->hdr.code == HDN_BEGINTRACKW || pHDN->hdr.code == HDN_BEGINTRACKA)
&& pHDN->iItem == 0) // Prevent only first (col# 0) from resizing
{
*pResult = TRUE; // disable tracking
return TRUE; // Processed message
}*/
return CListCtrl::OnNotify(wParam, lParam, pResult);
}
행 높이 조절
<리스트 컨트롤 행 높이 조절>
원천적으로 리스트 컨트롤은 높이 조절이 불가능하나.
다음과 같은 방법으로 간단히 조절이 가능합니다.
1. 다음의 코드를 다이알로그 생성이나 초기화 부분에 넣어주기만 하면된다.
2. 높이 조절은 20이라고 써진 값을 조절하며 된다.
CImageList m_image;
m_image.Create(1, 20, ILC_COLORDDB, 1, 0);
m_listTest.SetImageList(&m_image, LVSIL_SMALL);
'C & C++ > MFC 컨트롤' 카테고리의 다른 글
리스트(CListctrl)에서 체크상자(체크박스) 변경 확인하기 (0) | 2014.07.23 |
---|---|
MFC 프로그램의 실행 흐름 요약 (0) | 2014.07.10 |
다이얼로그 작업표시줄에서 감추기기(이중 다이얼로그) (0) | 2013.07.05 |
특정 색상을 제외한 투명한 다이얼로그 (0) | 2013.05.07 |
다이얼로그 최대화 하는 2가지 방법 (0) | 2012.11.28 |
댓글