Reactos
at master 76 lines 1.6 kB view raw
1/* 2 * PROJECT: ReactOS VGA Font Editor 3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) 4 * PURPOSE: Functions for opening and saving files 5 * COPYRIGHT: Copyright 2008 Colin Finck (colin@reactos.org) 6 */ 7 8#include "precomp.h" 9 10static OPENFILENAMEW ofn; 11 12VOID 13FileInitialize(IN HWND hwnd) 14{ 15 ZeroMemory( &ofn, sizeof(ofn) ); 16 ofn.lStructSize = sizeof(ofn); 17 ofn.hwndOwner = hwnd; 18 ofn.nMaxFile = MAX_PATH; 19 ofn.lpstrDefExt = L"bin"; 20} 21 22static __inline VOID 23PrepareFilter(IN PWSTR pszFilter) 24{ 25 // RC strings can't be double-null terminated, so we use | instead to separate the entries. 26 // Convert them back to null characters here. 27 do 28 { 29 if(*pszFilter == '|') 30 *pszFilter = 0; 31 } 32 while(*++pszFilter); 33} 34 35BOOL 36DoOpenFile(OUT PWSTR pszFileName) 37{ 38 BOOL bRet; 39 PWSTR pszFilter; 40 41 if( AllocAndLoadString(&pszFilter, IDS_OPENFILTER) ) 42 { 43 PrepareFilter(pszFilter); 44 ofn.lpstrFilter = pszFilter; 45 ofn.lpstrFile = pszFileName; 46 ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST; 47 48 bRet = GetOpenFileNameW(&ofn); 49 HeapFree(hProcessHeap, 0, pszFilter); 50 51 return bRet; 52 } 53 54 return FALSE; 55} 56 57BOOL 58DoSaveFile(IN OUT PWSTR pszFileName) 59{ 60 BOOL bRet; 61 PWSTR pszFilter; 62 63 if( AllocAndLoadString(&pszFilter, IDS_SAVEFILTER) ) 64 { 65 PrepareFilter(pszFilter); 66 ofn.lpstrFilter = pszFilter; 67 ofn.lpstrFile = pszFileName; 68 69 bRet = GetSaveFileNameW(&ofn); 70 HeapFree(hProcessHeap, 0, pszFilter); 71 72 return bRet; 73 } 74 75 return FALSE; 76}