Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Диалог сохранения файла Windows 7


Автор: Riddik 30.3.2012, 10:51
Привет!

Вызываю диалог сохранения файла вот так:

Код

SIZE_T GetSaveDialog(HINSTANCE    hInstance, HWND hWnd, LPCWSTR lpTitle, LPWSTR lpFileName, DWORD    dwFNSize, 
                     LPCWSTR lpDefExt, LPCWSTR lpInitialDir)
{
    IFileSaveDialog *pFSD;
    SIZE_T szResultSize = 0;
 
    HRESULT hResult = CoCreateInstance(__uuidof(FileSaveDialog), NULL, CLSCTX_INPROC_SERVER, __uuidof(IFileSaveDialog),
        (LPVOID*)&pFSD);
 
    if(SUCCEEDED(hResult))
    {
        pFSD->SetOptions(FOS_OVERWRITEPROMPT);
        pFSD->SetTitle(lpTitle);
        if(wcslen(lpFileName)) pFSD->SetFileName(lpFileName);        
 
        pFSD->SetDefaultExtension(lpDefExt);
 
        if(lpInitialDir)
        {
            IShellItem *pInitDir;
            SHCreateItemFromParsingName(lpInitialDir, NULL, __uuidof(IShellItem), (LPVOID *)&pInitDir);            
            pFSD->SetFolder(pInitDir);
        }
 
        if(SUCCEEDED(pFSD->Show(hWnd)))
        { 
            IShellItem *pResult;
            LPWSTR lpResult;
 
            pFSD->GetResult(&pResult);
            pResult->GetDisplayName(SIGDN_FILESYSPATH, &lpResult);
            wcsncpy(lpFileName, lpResult, dwFNSize); 
 
            CoTaskMemFree(lpResult);          
 
            szResultSize = wcslen(lpFileName);
        }
 
        if(pFSD) pFSD->Release();
    }
 
    return szResultSize;
}


Всё нормально, но диалог вдруг начал распахиваться на весь экран, хотя касательно него ничего в программе не менялось.
Просьба помочь, как задать нормальные (стандартные) параметры, чтобы он не распахивался на весь десктоп.

Еле нашёл по SetOptions в msdn, но там по парметрам этого вроде нет.
http://msdn.microsoft.com/en-us/library/bb775708%28VS.85%29.aspx

Автор: 500mhz 30.3.2012, 12:45
GetSaveFileName и нет проблем

Автор: Riddik 1.4.2012, 09:12
Спасибо:)

Ну и бывает же такое - кто-то просто двойным щелчком мыши равернул диалог на весь экран, а я парился:) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)