功能:单击按钮,保存RichText控件中的内容
richtext控件对应的变量为m_rtfvoid CDsllgDlg::OnButton1() 
{
HANDLE hFile ;
EDITSTREAM editstream; 
TCHAR OpenFileFail[] = _T("Cannot open the file");
TCHAR AppName[] = _T("Liqiang's HMR version 1.0");
OPENFILENAME ofn;
HWND hWnd;TCHAR AlternateFileName[256];
HINSTANCE g_hInstance;TCHAR CppFilterString[]=_T("Templates(*.hmt)\0*.hmt\0Files(*.hmr)\0*.hmr\0All Files(*.*)\0*.*\0");hWnd=this->m_hWnd;
g_hInstance=AfxGetApp()->m_hInstance;RtlZeroMemory(&ofn,sizeof(ofn));
                ofn.lStructSize = sizeof(ofn);
                ofn.hwndOwner = hWnd;
                ofn.hInstance = g_hInstance;
                ofn.lpstrFilter = CppFilterString;
                ofn.lpstrFile = AlternateFileName;
                ofn.nMaxFile = sizeof(AlternateFileName);
                ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
                if(GetSaveFileName(&ofn))
                {
                    hFile = CreateFile(AlternateFileName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
                    if(hFile != INVALID_HANDLE_VALUE)
                    {
                        editstream.dwCookie = (DWORD)hFile;
                        editstream.pfnCallback = StreamOutProc;
                        m_rtf.SendMessage(EM_SETMODIFY,FALSE,0);
                        CloseHandle(hFile);
                    }
                    else
                        MessageBox(OpenFileFail,AppName,MB_OK | MB_ICONERROR);
        
                }

}static DWORD CALLBACK StreamOutProc(DWORD hFile,LPBYTE pBuffer,long NumBytes,long *pBytesRead)
{
    return (WriteFile((HANDLE)hFile,pBuffer,NumBytes,(LPDWORD)pBytesRead,0) ^ 1);
}

解决方案 »

  1.   

    试试
     m_rtf.SendMessage(EM_STREAMOUT,FALSE,0);
      

  2.   

    我仔细看了下
    AlternateFileName没有值
    ofn也没有用到
    发现根本就没有FileDialog么。。
      

  3.   

    EDITSTREAM editstream;  根本没有用到嘛
      

  4.   

            HANDLE hFile ;
    EDITSTREAM editstream;  
    TCHAR OpenFileFail[] = _T("Cannot open the file");
    TCHAR AppName[] = _T("Liqiang's HMR version 1.0");
    // TCHAR AlternateFileName[256];
    TCHAR CppFilterString[]=_T("Templates(*.hmt)\0*.hmt\0Files(*.hmr)\0*.hmr\0All Files(*.*)\0*.*\0");   CFileDialog fileDlg(0, NULL, NULL, OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, CppFilterString); if(IDOK == fileDlg.DoModal() )
    {
    hFile = CreateFile(fileDlg.m_ofn.lpstrFile,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
    if(hFile != INVALID_HANDLE_VALUE)
    {
    editstream.dwCookie = (DWORD)hFile;
    editstream.pfnCallback = StreamOutProc;
    m_rtf.SendMessage(EM_STREAMOUT,SF_TEXT,(LPARAM)&editstream);
    CloseHandle(hFile);
    }
    else
    MessageBox(OpenFileFail,AppName,MB_OK | MB_ICONERROR);   
    }上面代码复制到 按钮响应函数里