功能:单击按钮,保存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);
}
m_rtf.SendMessage(EM_STREAMOUT,FALSE,0);
AlternateFileName没有值
ofn也没有用到
发现根本就没有FileDialog么。。
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);
}上面代码复制到 按钮响应函数里