2014-09-03 1 views
0

추가 버튼을 클릭하면 목록 컨트롤의 항목을 삽입하려고합니다.
하지만 추가 버튼을 클릭해도 항목이 삽입되지 않습니다.
또한 목록 컨트롤의 View 속성을 아이콘에서보고로 변경했습니다.
다음 코드에 문제가 있습니까?

목록 컨트롤의 항목을 삽입 할 수 없습니다.

BOOL CMFCApplication7Dlg::OnInitDialog() 
{ 
    CDialogEx::OnInitDialog(); 


    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
    ASSERT(IDM_ABOUTBOX < 0xF000); 

    CMenu* pSysMenu = GetSystemMenu(FALSE); 
    if (pSysMenu != NULL) 
    { 
     BOOL bNameValid; 
     CString strAboutMenu; 
     bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); 
     ASSERT(bNameValid); 
     if (!strAboutMenu.IsEmpty()) 
     { 
      pSysMenu->AppendMenu(MF_SEPARATOR); 
      pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
     } 
    } 


    SetIcon(m_hIcon, TRUE);   
    SetIcon(m_hIcon, FALSE);   


    // Here is insert columns. 

    TCHAR *szText[2] = { _T("NAME"), _T("E-MAIL") }; 
    int nWid[2] = { 65, 180 }; 

    LV_COLUMN lCol; 

    lCol.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; 
    lCol.fmt = LVCFMT_LEFT; 

    for (int i = 0; i < 2;i++) 
    { 
     lCol.pszText = szText[i]; 
     lCol.iSubItem = i; 
     lCol.cx = nWid[i]; 
     m_ListC.InsertColumn(i, &lCol); 
    } 

    return TRUE; 
} 


// 여기에 삽입 항목 코드입니다.

void CMFCApplication7Dlg::OnBnClickedButtAdd() 
{ 

    TCHAR szText[50] = _T(""); 
    int nIndex = 0; 

    UpdateData(TRUE); 

    LVITEM litem; 

    litem.mask = LVIF_TEXT; 
    litem.iItem = nIndex; 

    litem.iSubItem = 0; 
    swprintf_s(szText, sizeof(szText), _T("%s"), m_strName); 
    litem.pszText = (LPWSTR)szText; 

    m_ListC.InsertItem(&litem); 

    litem.iSubItem = 1; 
    swprintf_s(szText, sizeof(szText), _T("%s"), m_strMail); 
    litem.pszText = (LPWSTR)szText; 
    m_ListC.SetItem(&litem); 

    m_strName = _T(""); 
    m_strMail = _T(""); 

    nIndex++; 
    UpdateData(FALSE); 
} 

답변

1

마스크가 적용되지 않는 정보 LVITEM을 설정합니다. 또한 iSubItem 멤버는 일반 열을 삽입 할 때 보고서 모드에서 사용되지 않습니다.

사용자 struct 버전 대신 m_listC InsertColumn, InsertItem 및 SetItemText의 멤버 함수를 사용합니다. 오류가 발생하기 쉽습니다.

Tipp : ASSERT/VERIFY를 사용하여 작업하고있는 작업을 확인하십시오. 코드를 검사하는 동안 오류가 없습니다.

관련 문제