【问题标题】:How to get SaveDialogBox combobox values如何获取 SaveDialogBox 组合框值
【发布时间】:2012-09-26 20:54:29
【问题描述】:

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

    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;

感谢您的回复! ))

【问题讨论】:

    标签: c++ file winapi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您要设置lpstrDefExt 成员:

      来自MSDN

      类型:LPCTSTR

      默认扩展名。

      GetOpenFileName 和 GetSaveFileName 将此扩展名附加到文件名,如果用户 无法键入扩展名。此字符串可以是任意长度,但仅限 前三个字符被附加。字符串不应包含 一段时间 (。)。如果此成员为 NULL 并且用户未能键入 扩展名,不附加扩展名。

      【讨论】:

      • 是的,谢谢,但如果组合框字符串不是 DefExt 我不想设置默认扩展名而是组合框扩展名
      • 我相信这就是它的作用。试试看,让我们知道。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2018-02-05
      • 2019-11-17
      相关资源
      最近更新 更多