在sdi或者mdi中菜单中都有文件打开的选项,可是我在基于对话框的mfc程序如何用一个按扭的响应来实现这个功能呢!?!?·
   一开始我想用AfxGetApp()->OnFileOpen();实现,可是这个函数是保护声明所以不能使用,所以希望高手可以指点一下,最好给个源程序!!!谢谢了!

解决方案 »

  1.   

    做一个按钮响应
    因为我删了一些东西,可能括号有问题,你调试一下
    void CDlg::OnOpen() 
    {
    LPTSTR d_lpTextBuffer = 0;
    DWORD d_dwFileLength = 0;
    CString m_Filename; CString szFilter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*||";
        CFileDialog dlg(TRUE,"txt",NULL,OFN_OVERWRITEPROMPT,szFilter);

    if(dlg.DoModal() == IDOK)
    {

    CString str,temp;
    CFile cfData;
    if(!cfData.Open (m_Filename,CFile::modeReadWrite))
    {
    str = "读取文件 "+m_Filename+"失败!";
    MessageBox(str,"警告", MB_ICONWARNING | MB_OK);
    // return;
    } if(d_lpTextBuffer)
    {
    free(d_lpTextBuffer);
    d_lpTextBuffer = 0;
    }
    d_dwFileLength = cfData.GetLength()+sizeof(char);
    d_lpTextBuffer = (LPTSTR)malloc(d_dwFileLength-1);
    if(!d_lpTextBuffer)
    {
    MessageBox("不能为文件分配内存!","警告", MB_ICONWARNING | MB_OK);
    // return ;
    }
    cfData.Read((LPVOID)d_lpTextBuffer,d_dwFileLength);
    d_lpTextBuffer[d_dwFileLength] = '\0';
    }
    }