130 lines
3 KiB
C++
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;
|
||
|
}
|