知识点: 获取CListCtrl选中文本 用ShellExecute打开外部文件 一、CListCtrl::GetFirstSelectedItemPosition CListCtrl::GetFirstSelectedItemPosition POSITION GetFirstSelectedItemPosition( ) const; //返回选中项目的位置 二、CListCtrl::GetNextSelectedItem CListCtrl::GetNextSelectedItem int GetNextSelectedItem( POSITION& pos ) const; //返回选中项目的索引值 三、ShellExecute函数 HINSTANCE ShellExecute( HWND hwnd, //指定父窗口句柄,此参数可为NULL LPCTSTR lpOperation, //操作方式 LPCTSTR lpFile, //要打开的文件名,一般是全路径的如 c:\1.txt LPCTSTR lpParameters, //要带的参数 LPCTSTR lpDirectory,//默认运行目录 INT nShowCmd //显示方式 ); 四、代码示例 void CDialog_ListCtrl_Test::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR); // TODO: 在此添加控件通知处理程序代码 CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1); POSITION pos=plst_ctl->GetFirstSelectedItemPosition(); if (pos) { int item=plst_ctl->GetNextSelectedItem(pos); CString ws=plst_ctl->GetItemText(item,0); //获取文件名 TRACE("%ws ",ws); CString filepath; filepath=L"C:\Windows\"; ws=filepath+ws; //算出文件路径 ShellExecute(0,L"open",ws,NULL,NULL,SW_SHOW); //打开文件 } *pResult = 0; } ////////////////////////// void CDialog_ListCtrl_Test::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR); // TODO: 在此添加控件通知处理程序代码 //获取文件目录路径及文件 CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1); //获取ListCtrl选中项的位置 POSITION pos=plst_ctl->GetFirstSelectedItemPosition(); if (pos) { int item_index=plst_ctl->GetNextSelectedItem(pos); //获取选中图标的文件名 CString filename=plst_ctl->GetItemText(item_index,0); filename=FileDir+filename; TRACE("%ws ",filename); ShellExecuteW(0,NULL,filename,NULL,NULL,SW_SHOWNORMAL); } *pResult = 0; }