CListCtrl 사용시에
필드 업데이트 해주는 부분과, 처음 Colomn만드는 부분을 분리하지 않으면 계속 만드는 불상사가 생긴다.
이렇게 바꾸니, Row전체를 인식하고, 또한 값도 정상적으로 Return됨.
BOOL CClassName::OnInitDialog() {
CDialogEx::OnInitDialog();
CRect tempRect;
m_CClassNameListCtrl.GetClientRect(&tempRect);
int tempWidth = (int)(tempRect.Width()/5.0 + 0.5);
m_CClassNameListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|\\
LVS_EX_ONECLICKACTIVATE);
m_CClassNameListCtrl.InsertColumn(0, _T("ID"), LVCFMT_CENTER, tempWidth, -1); // Col#1 추가
m_CClassNameListCtrl.InsertColumn(1, _T("입력파일명"), LVCFMT_CENTER, \\
(tempRect.Width()-tempWidth), -1); // Col#2 추가
UpdateDataCClassNameList(); // 각 필드 업데이트 ...
}
void CClassName::UpdateDataInputCalList() {
m_pApp = (CClassNameApp *)AfxGetApp();
m_pProjectInfoEx = &(m_pApp->m_ProjectInfoEx);
CString InputStr;
CPathNameInfo InputStrInfo;
CRect tempRect;
m_ClassNameListCtrl.GetClientRect(&tempRect);
int tempWidth = (int)(tempRect.Width()/4.0 + 0.5); // 리스트 초기화
m_CalFileListCtrl.DeleteAllItems(); //int tempindx = 0;
for(int indx = 0;indxm_InputFileNo;indx++) {
CString tempStr;
tempStr.Format("%d", indx);
m_ClassNameListCtrl.InsertItem(indx, tempStr);
m_ClassNameListCtrl.SetItem(indx, 0, LVIF_TEXT , tempStr, 0, 0, 0, NULL);
tempStr = InputStrInfo.m_FileName.GetString();
m_CalFileListCtrl.SetItem(indx, 1, LVIF_TEXT, tempStr, 0, 0, 0, NULL);
}
}
필드 업데이트 해주는 부분과, 처음 Colomn만드는 부분을 분리하지 않으면 계속 만드는 불상사가 생긴다.
void CClassName::OnNMClickFileList(NMHDR *pNMHDR1, LRESULT *pResult1) {
LPNMITEMACTIVATE pNMItemActivate1 = reinterpret_cast(pNMHDR1);
NMITEMACTIVATE* nm1=(NMITEMACTIVATE*)pNMHDR1;
m_raw_cal_sel_row = nm1->iItem;
m_raw_cal_sel_col = nm1->iSubItem;
Invalidate();
*pResult1 = 0;
} 에서 iItem = -1이 나오는 경우는 대개 OninitDialog()에서, m_CClassNameListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES); 인경우가 있었음.m_CClassNameListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|\\
LVS_EX_ONECLICKACTIVATE);
이렇게 바꾸니, Row전체를 인식하고, 또한 값도 정상적으로 Return됨.
Comments