• 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 
    ",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;
    }
  • 相关阅读:
    JAVA设计模式-设计原则
    java 8 stream特性
    使用跟踪标记查看过滤统计信息是否被使用
    找到SQL Server的序列号
    使用SSIS进行数据清洗
    找到SQL Server数据库历史增长信息
    如何查看某个查询用了多少TempDB空间
    SQL Server 2014云特性:无缝集成公有云
    SQL Server 2014新特性-原生备份加密
    强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • 原文地址:https://www.cnblogs.com/whzym111/p/6224828.html
Copyright © 2020-2023  润新知