BOOL CLCDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon m_imagelist.Create(16,16,TRUE,2,2); m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); m_list.SetImageList(&m_imagelist,LVSIL_SMALL); m_font.CreateFont(16, 0,0,0,FW_NORMAL, 0,0,0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); m_list.SetFont(&m_font); /*-----------------------------------------------------------*/ m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_list.SetBkColor(RGB(247,247,255)); m_list.SetTextColor(RGB(0,0,255)); m_list.SetTextBkColor(RGB(247,247,255)); m_list.InsertColumn(0, "學號", LVCFMT_LEFT, 110); m_list.InsertColumn(1, "姓名", LVCFMT_LEFT, 130); m_list.InsertColumn(2, "成績", LVCFMT_LEFT, 47); m_list.InsertItem(0,"2002112105"); m_list.SetItemText(0,1,"程紅秀"); m_list.SetItemText(0,2,"96"); m_list.InsertItem(1,"2002112126"); m_list.SetItemText(1,1,"符中輝"); m_list.SetItemText(1,2,"85"); m_list.InsertItem(2,"2002112125"); m_list.SetItemText(2,1,"王斌年"); m_list.SetItemText(2,2,"95"); m_list.InsertItem(3,"2002112103"); m_list.SetItemText(3,1,"袁浩"); m_list.SetItemText(3,2,"92"); return TRUE; // return TRUE unless you set the focus to a control } void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { POSITION pos = m_list.GetFirstSelectedItemPosition(); m_nIndex = m_list.GetNextSelectedItem(pos); // 得到項目索引 *pResult = 0; } void CLCDemoDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) { POSITION pos = m_list.GetFirstSelectedItemPosition(); m_nIndex = m_list.GetNextSelectedItem(pos); // 得到項目索引 CEditDlg ed; ed.m_strNo=m_list.GetItemText(m_nIndex,0); ed.m_strName=m_list.GetItemText(m_nIndex,1); ed.m_strScore=m_list.GetItemText(m_nIndex,2); if(ed.DoModal()==IDOK) { m_list.SetItemText(m_nIndex,0,ed.m_strNo); m_list.SetItemText(m_nIndex,1,ed.m_strName); m_list.SetItemText(m_nIndex,2,ed.m_strScore); } *pResult = 0; } void CLCDemoDlg::OnButtonUp() { m_list.SetFocus(); if (m_nIndex == -1) //如果沒有選擇就返回 { MessageBox("請選擇一項再上移!","提示",MB_ICONINFORMATION); return; } if (m_nIndex == 0) // 判斷所選項是否位於行首 { MessageBox("已經位於第一行!","提示",MB_ICONINFORMATION); return; } // 提取所選清單項目各列類容 CString str1, str2, str3; str1 = m_list.GetItemText(m_nIndex, 0); str2 = m_list.GetItemText(m_nIndex, 1); str3 = m_list.GetItemText(m_nIndex, 2); // 刪除所選清單項目 m_list.DeleteItem(m_nIndex); // 在m_nIndex-1位置處插入上面所刪清單項目的各列類容 m_list.InsertItem(m_nIndex-1, str1); m_list.SetItemText(m_nIndex-1, 1, str2); m_list.SetItemText(m_nIndex-1, 2, str3); m_nIndex--; // 使得m_nIndex-1位置處項目高亮顯示並獲得焦點 UINT flag = LVIS_SELECTED|LVIS_FOCUSED; m_list.SetItemState(m_nIndex, flag, flag); } void CLCDemoDlg::OnButtonDown() { m_list.SetFocus(); if (m_nIndex == -1) //如果沒有選擇就返回 { MessageBox("請選擇一項再下移!","提示",MB_ICONINFORMATION); return; } if (m_nIndex == m_list.GetItemCount()-1) // 判斷所選項是否位於行尾 { MessageBox("已經位於最末行!","提示",MB_ICONINFORMATION); return; } CString str1, str2, str3; str1 = m_list.GetItemText(m_nIndex, 0); str2 = m_list.GetItemText(m_nIndex, 1); str3 = m_list.GetItemText(m_nIndex, 2); m_list.DeleteItem(m_nIndex); // 在m_nIndex+1位置處插入上面所刪清單項目的各列類容 m_list.InsertItem(m_nIndex+1, str1); m_list.SetItemText(m_nIndex+1, 1, str2); m_list.SetItemText(m_nIndex+1, 2, str3); m_nIndex++; // 使得m_nIndex+1位置處項目高亮顯示並獲得焦點 UINT flag = LVIS_SELECTED|LVIS_FOCUSED; m_list.SetItemState(m_nIndex, flag, flag); } void CLCDemoDlg::OnEdit() { POSITION pos = m_list.GetFirstSelectedItemPosition(); m_nIndex = m_list.GetNextSelectedItem(pos); // 得到項目索引 if(m_nIndex==-1) { MessageBox("請選擇一項在修改!","提示",MB_ICONINFORMATION); return; } CEditDlg ed; ed.m_strNo=m_list.GetItemText(m_nIndex,0); ed.m_strName=m_list.GetItemText(m_nIndex,1); ed.m_strScore=m_list.GetItemText(m_nIndex,2); if(ed.DoModal()==IDOK) { m_list.SetItemText(m_nIndex,0,ed.m_strNo); m_list.SetItemText(m_nIndex,1,ed.m_strName); m_list.SetItemText(m_nIndex,2,ed.m_strScore); } } void CLCDemoDlg::OnAbout() { CAboutDlg dlg; dlg.DoModal(); } void CLCDemoDlg::OnExit() { PostMessage(WM_CLOSE,0,0); } void CLCDemoDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult) { CPoint pt; ::GetCursorPos(&pt); CMenu menu; menu.LoadMenu(IDR_MENU1); CMenu* pMenu=menu.GetSubMenu(0); pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this,NULL); *pResult = 0; } void CLCDemoDlg::OnAdd() { CEditDlg ed; if(ed.DoModal()==IDOK) { int nn=m_list.InsertItem(m_list.GetItemCount(),ed.m_strNo); m_list.SetItemText(nn,1,ed.m_strName); m_list.SetItemText(nn,2,ed.m_strScore); } } void CLCDemoDlg::OnDel() { POSITION pos = m_list.GetFirstSelectedItemPosition(); m_nIndex = m_list.GetNextSelectedItem(pos); // 得到項目索引 if(m_nIndex==-1) { MessageBox("請選擇一項在刪除!","提示",MB_ICONINFORMATION); return; } m_list.DeleteItem(m_nIndex); UINT flag = LVIS_SELECTED|LVIS_FOCUSED; m_list.SetItemState(m_nIndex-1, flag, flag); } void CLCDemoDlg::OnSave() { CStdioFile sf; if(sf.Open("資料.txt",CFile::modeCreate | CFile::modeWrite)) { CString strOut; strOut="\r\n學號\t\t姓名\t\t成績\r\n"; sf.WriteString(strOut); for(int i=0;i { strOut=m_list.GetItemText(i,0) + "\t"+m_list.GetItemText(i,1)+"\t "+m_list.GetItemText(i,2) +"\r\n"; sf.WriteString(strOut); } sf.Close(); MessageBox("儲存成功!","提示",MB_ICONINFORMATION); } else MessageBox("儲存失敗!","提示",MB_ICONINFORMATION); } |