📄 brsfile.cpp
字号:
// brsfile.cpp
#include <windows.h>
#include <string.h>
#include "msc.h"
#include "brsfile.h"
#ifndef OFN_DONTADDTORECENT
#define OFN_DONTADDTORECENT 0x02000000 // Win2K or later only
#endif
//////////////////////////////
// ANSI斉 //
//////////////////////////////
// 僼傽僀儖柤傪僽儔僂僘偟偰庢摼偡傞乮ANSI斉乯
// nMaxLen 偼 MAX_PATH 埲忋傪巜掕
// szFilter 偼 "暥帤楍\0僷僗儅僗僋\0\0" 傪巜掕
// 惉岟側傜 0 傪丄幐攕側傜 0 埲奜傪曉偡
int WINAPI BrowseForFileA ( HWND hWnd, char *szSelectedFile, int nMaxLen, const char *szInitialDir, const char *szTitle, const char *szFilter, int IsAllowMultiSelect ) {
unsigned long dwFlags = OFN_HIDEREADONLY | OFN_NOCHANGEDIR ;
if ( IsWin2000orLater() ) dwFlags |= OFN_DONTADDTORECENT ;
if ( IsAllowMultiSelect ) dwFlags |= OFN_ALLOWMULTISELECT ;
// szInitialDir 偲 szSelectedFile 偑摨偠僶僢僼傽偩偭偨偲偒偺懳嶔
char szInitialDirSaved [ MAX_PATH ] ;
if ( szInitialDir ) {
if ( strlen ( szInitialDir ) >= MAX_PATH ) szInitialDir = "" ;
else szInitialDir = strcpy ( szInitialDirSaved, szInitialDir ) ;
}
if ( nMaxLen ) *szSelectedFile = 0 ;
OPENFILENAMEA OpenFileName = { 0 } ;
OpenFileName.lStructSize = sizeof(OPENFILENAMEA) ;
OpenFileName.hwndOwner = hWnd ;
OpenFileName.lpstrFile = szSelectedFile ;
OpenFileName.nMaxFile = nMaxLen ;
OpenFileName.Flags = dwFlags ;
OpenFileName.lpstrInitialDir = szInitialDir ;
OpenFileName.lpstrTitle = szTitle ;
OpenFileName.lpstrFilter = szFilter ;
if ( GetOpenFileNameA ( & OpenFileName ) ) return 0 ;
if ( nMaxLen ) *szSelectedFile = 0 ;
if ( IsAllowMultiSelect && nMaxLen > 1 ) *( szSelectedFile + 1 ) = 0 ;
return 1 ;
}
//////////////////////////////
// UNICODE斉 //
//////////////////////////////
// 僼傽僀儖柤傪僽儔僂僘偟偰庢摼偡傞乮UNICODE斉乯
// nMaxLen 偼 MAX_PATH 埲忋傪巜掕
// szFilter 偼 "暥帤楍\0僷僗儅僗僋\0\0" 傪巜掕
// 惉岟側傜 0 傪丄幐攕側傜 0 埲奜傪曉偡
int WINAPI BrowseForFileW ( HWND hWnd, wchar_t *szSelectedFile, int nMaxLen, const wchar_t *szInitialDir, const wchar_t *szTitle, const wchar_t *szFilter, int IsAllowMultiSelect ) {
unsigned long dwFlags = OFN_HIDEREADONLY | OFN_NOCHANGEDIR ;
if ( IsWin2000orLater() ) dwFlags |= OFN_DONTADDTORECENT ;
if ( IsAllowMultiSelect ) dwFlags |= OFN_ALLOWMULTISELECT ;
// szInitialDir 偲 szSelectedFile 偑摨偠僶僢僼傽偩偭偨偲偒偺懳嶔
wchar_t szInitialDirSaved [ MAX_PATH ] ;
if ( szInitialDir ) {
if ( wcslen ( szInitialDir ) >= MAX_PATH ) szInitialDir = L"" ;
else szInitialDir = wcscpy ( szInitialDirSaved, szInitialDir ) ;
}
if ( nMaxLen ) *szSelectedFile = 0 ;
OPENFILENAMEW OpenFileName = { 0 } ;
OpenFileName.lStructSize = sizeof(OPENFILENAMEW) ;
OpenFileName.hwndOwner = hWnd ;
OpenFileName.lpstrFile = szSelectedFile ;
OpenFileName.nMaxFile = nMaxLen ;
OpenFileName.Flags = dwFlags ;
OpenFileName.lpstrInitialDir = szInitialDir ;
OpenFileName.lpstrTitle = szTitle ;
OpenFileName.lpstrFilter = szFilter ;
if ( GetOpenFileNameW ( & OpenFileName ) ) return 0 ;
if ( nMaxLen ) *szSelectedFile = 0 ;
if ( IsAllowMultiSelect && nMaxLen > 1 ) *( szSelectedFile + 1 ) = 0 ;
return 1 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -