MFC 用ShellExecute打开外部文件

知识点:  
  获取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 \n",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 \n",filename);
        ShellExecuteW(0,NULL,filename,NULL,NULL,SW_SHOWNORMAL);
    }

    *pResult = 0;
}

 

转载于:https://www.cnblogs.com/whzym111/p/6224828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值