chenyonken 2017-08-03 00:53 采纳率: 0%
浏览 1052

在vc6.0中使用Edit控件实现文件的拖放打开出错

开发一个简单的NotePad,使用了Edit控件,对话框和Edit控件都已经设置了属性Accept files ,消息相应函数也已经添加,运行的时候拖放文件到Edit控件里的时候出现了“+
"号,但是此时对话框是灰色的,而且放开鼠标后也没能打开文件,没什么反应,实在是找不出是什么问题了,求指教

 void CNotePadDlg::OnDropFiles(HDROP hDropInfo) 
{
    AfxMessageBox("DropFilesTest");
    // TODO: Add your message handler code here and/or call default
    if(!Prompt())
        return;
    char szFile[MAX_PATH];
    UINT n=DragQueryFile(hDropInfo,0,szFile,sizeof(szFile));
    /*****start***参数解释******
    函数:UINTDragQueryFile( HDROP hDrop,UINT iFile,LPTSTRlpszFile,UINT cch);
    功能:查询拖放文件的相关信息
    HDROP:拖放文件的标识符
    iFile:待查询的文件索引号,可以同时拖拽多个文件,因此就需要一个索引号来进行区分,如果该参数为0xFFFFFFFF,
            则该函数返回拖拽的文件个数
    lpszFile:用于存放文件名的缓冲区首地址
    cch:缓冲区长度
    ********end****参数解释**********/
    CString str=szFile;
    n=str.ReverseFind('\\');
    if(n>0)
    {
        str=str.Mid(n+1);
        //打开文件

        HANDLE hFile=::CreateFile(szFile,GENERIC_READ,FILE_SHARE_READ,
        NULL,OPEN_EXISTING,0,NULL);
        if(INVALID_HANDLE_VALUE==hFile)
        {
            AfxMessageBox("文件打开失败");
            return ;
        }

        m_szOpenFileFullPath=szFile;//保存当前打开文件的路径,保存(不是另存)的时候使用

        DWORD dwLen=::GetFileSize(hFile,NULL);
        char *pBuf=new char[dwLen+1];
        DWORD dwRet=0;
        ::ReadFile(hFile,pBuf,dwLen,&dwRet,NULL);
        pBuf[dwRet]=0;//文件末尾置为0
        SetDlgItemText(IDC_TEXT,pBuf);
        CloseHandle(hFile);
        delete []pBuf;
        m_myEdit.SetModify(FALSE);
    }   
    CDialog::OnDropFiles(hDropInfo);
}

图片说明
图片说明
图片说明
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-08-03 16:37
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误