如果用户没有这样做并且连接文件名和extension-combobox-string,我想设置文件的扩展名。有一些简单的方法可以这样做,或者我需要一些“钩子”?
OPENFILENAME ofn; // common dialog box structure
TCHAR szFile[260]; // buffer for file name
HANDLE hFile; // file handle
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = 0;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = _T("Текстові файли(*.txt)\0*.txt\0Word(*.doc)\0*.doc\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER;
if(GetSaveFileName(&ofn) == TRUE)
{
hFile = CreateFile( szFile,
GENERIC_WRITE,
0,
(LPSECURITY_ATTRIBUTES)NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
(HANDLE)NULL);
int editLen = Edit_GetTextLength(edit);
TCHAR* buffer = new TCHAR[editLen+1];
DWORD wroteLen = 0;
Edit_GetText(edit,buffer,editLen+1);
//Set extension if need
///////////////////////
if(!WriteFile(hFile,buffer,editLen*sizeof(TCHAR),&wroteLen,NULL))
MessageBox(hwnd,_T("File wasn`t saved.."),_T("Error"),MB_ICONERROR);
CloseHandle(hFile);
delete[]buffer;
感谢您的回复! ))
答案 0 :(得分:2)
您想要设置lpstrDefExt
成员:
来自MSDN:
类型:LPCTSTR
默认扩展名。
GetOpenFileName和 如果用户,GetSaveFileName会将此扩展名附加到文件名 无法输入扩展名。此字符串可以是任何长度,但仅限 附加前三个字符。该字符串不应包含 一段时间 (。)。如果此成员为NULL并且用户无法键入 扩展名,不附加扩展名。
答案 1 :(得分:2)
ofn.nFilterIndex
设置为文件扩展名组合框选择的从1开始的索引。