如何获取保存对话框组合框值



如果用户没有这样做,我想设置文件的扩展名并连接文件名和扩展名组合框字符串。有没有一些简单的方法可以做到这一点,或者我需要一些"钩子"?

    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 '' 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)*.txtWord(*.doc)*.doc");
    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;

感谢您的回复!

ofn.nFilterIndex设置为文件扩展名组合框选择的从 1 开始的索引。

您要设置lpstrDefExt成员:

从 MSDN:

类型: LPCTSTR

默认扩展名。

获取打开文件名和GetSave文件名将此扩展名附加到文件名,如果用户无法键入扩展名。此字符串可以是任意长度,但只能将附加前三个字符。字符串不应包含句点 (.)。如果此成员为 NULL,并且用户无法键入扩展名,不附加扩展名。

最新更新