windows-nt/Source/XPSP1/NT/shell/osshell/accessib/accwiz/pgsvefil.cpp
2020-09-26 16:20:57 +08:00

130 lines
3 KiB
C++

//Copyright (c) 1997-2000 Microsoft Corporation
#include "pch.hxx" // pch
#pragma hdrstop
#include "resource.h"
#include "pgSveFil.h"
CSaveToFilePg::CSaveToFilePg(
LPPROPSHEETPAGE ppsp
) : WizardPage(ppsp, IDS_WIZSAVETOFILETITLE, IDS_WIZSAVETOFILESUBTITLE)
{
m_dwPageId = IDD_WIZSAVETOFILE;
ppsp->pszTemplate = MAKEINTRESOURCE(m_dwPageId);
}
CSaveToFilePg::~CSaveToFilePg(
VOID
)
{
}
LRESULT
CSaveToFilePg::OnInitDialog(
HWND hwnd,
WPARAM wParam,
LPARAM lParam
)
{
UpdateControls();
return 1;
}
void CSaveToFilePg::UpdateControls()
{
// No options
}
LRESULT
CSaveToFilePg::OnCommand(
HWND hwnd,
WPARAM wParam,
LPARAM lParam
)
{
LRESULT lResult = 1;
WORD wNotifyCode = HIWORD(wParam);
WORD wCtlID = LOWORD(wParam);
HWND hwndCtl = (HWND)lParam;
switch(wCtlID)
{
case IDC_BTNBROWSE:
{
// These commands require us to re-enable/disable the appropriate controls
TCHAR szBuf[_MAX_PATH];
TCHAR szBuf2[_MAX_PATH];
TCHAR szDefaultName[_MAX_PATH];
LoadString(g_hInstDll, IDS_DEFAULTSAVEFILENAME, szDefaultName, ARRAYSIZE(szDefaultName));
TCHAR szFilterName[_MAX_PATH];
TCHAR szTemp[_MAX_PATH];
ZeroMemory(szFilterName, _MAX_PATH);
LoadString(g_hInstDll, IDS_FILTERNAME, szFilterName, ARRAYSIZE(szFilterName));
LoadString(g_hInstDll, IDS_FILTER, szTemp, ARRAYSIZE(szTemp));
// Copy the extension to after the filter name
lstrcpy(&szFilterName[lstrlen(szFilterName) + 1], szTemp);
// Double NULL terminate it
szFilterName[lstrlen(szFilterName) + 1 + lstrlen(szTemp) + 1] = 0;
szFilterName[lstrlen(szFilterName) + 1 + lstrlen(szTemp) + 2] = 0;
memset(szBuf, 0, ARRAYSIZE(szBuf));
memset(szBuf2, 0, ARRAYSIZE(szBuf));
wsprintf(szBuf, szDefaultName);
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hwnd;
ofn.hInstance = g_hInstDll;
ofn.lpstrFilter = szFilterName;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = szBuf;
ofn.nMaxFile = _MAX_PATH;
ofn.lpstrFileTitle = szBuf2;
ofn.nMaxFileTitle = _MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = __TEXT("acw");
ofn.lCustData = NULL;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
BOOL bOk = GetSaveFileName(&ofn);
if(bOk)
{
// Save the file to disk.
HANDLE hFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwWritten;
WriteFile(hFile, (LPCVOID)&g_Options.m_schemePreview, sizeof(g_Options.m_schemePreview), &dwWritten, NULL);
CloseHandle(hFile);
// TODO: Maybe go to the next page
}
else
StringTableMessageBox(m_hwnd, IDS_WIZERRORSAVINGFILETEXT, IDS_WIZERRORSAVINGFILETITLE, MB_OK);
}
UpdateControls();
lResult = 0;
}
break;
default:
break;
}
return lResult;
}