# ExtractXlsxRow
**Repository Path**: lf_-dev/extract-xlsx-row
## Basic Information
- **Project Name**: ExtractXlsxRow
- **Description**: 提取单xlsx格式文件中的一些行,每行与表头输出xlsx格式的新文件
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-22
- **Last Updated**: 2023-12-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: xls, Codec, encoding
## README
# ExtractXlsxRow
该软件用于提取xlsx格式的若干行,组成若干新文件存储,新文件名以第一列数据命名。
该软件基于openxlsx开发。
# Encoding
1. openXlsx 只支持UTF-8编码(包括文件名和文件内容,都会被解析为UTF-8编码)
例如:
* xlxs内容
* 数据:姓名
* 读入:E5A793 E5908D [utf8编码]
2. GetOpenFileName 返回的 lpstrFile 为 GB2312 编码
3. 常量字符的编码
常量字符的编码受3个方面的影响:
* 文件编码
* 编译选项
* 字符串前缀
三者关系如下:
|文件编码|编译器选项|前缀|结果
|-|-|-|-|
|UTF-8|/utf-8|u8|UTF-8|
|UTF-8|/utf-8||UTF-8|
|UTF-8||u8|无效|
|UTF-8|||UTF-8|
|UTF-8-BOM|/utf-8|u8|UTF-8|
|UTF-8-BOM|/utf-8||UTF-8|
|UTF-8-BOM||u8|UTF-8|
|UTF-8-BOM|||GB2312|
|GB2312|/utf-8|u8|GB2312|
|GB2312|/utf-8||GB2312|
|GB2312||u8|GB2312|
|GB2312|||GB2312|
```c++
char* a = "示例"
// 1. main.cpp : utf8-bom 编码
// 读入:CABE C0FD [ gb231编码]
// 2. main.cpp: utf8 编码
// 读入:e7 a4 ba e4 be 8b [utf8编码]
```
* 设置编译选项:add_cxxflags("/utf-8"),可以影响到字符串的编码
* 字符串前 加 u8 前缀(如 u8"一"):使字符串按照utf-8 编码,同理 u:utf-16; U: utf-32
* u8前缀在cxx17及之前,将字符串转化为 const char[] 类型
* u8前缀在cxx17之后,将字符串转化为 const char8_t[] 类型
4. CMD 窗口:
可以通过chcp命令,修改当前cmd环境的 code page,从而显示不同的编码字符串,默认可正常输出 GB2312 编码 (chcp 936)
* cp 65001: UTF-8
* cp 936: 简体中文 :可正常输出GB2312 编码
* cp 950:繁体中文
更多cp,详见 "附录1:code page idenitfiers"
5. 字体TTF: 字体中记录的是字符的 unicode编码(UTF-16)
```c++
// unicode 开始,结束
0x0020, 0x00FF, // Basic Latin + Latin Supplement(基本拉丁文和拉丁文补充)
0x2000, 0x206F, // General Punctuation( 通用标点符号)
0x3000, 0x30FF, // CJK Symbols and Punctuations, Hiragana, Katakana(中日韩 符号,标点,平假名,片假名)
0x31F0, 0x31FF, // Katakana Phonetic Extensions(片假名音译扩展)
0xFF00, 0xFFEF, // Half-width characters(半宽字符)
0x4e00, 0x9FAF, // CJK Ideograms(中日韩表意文字)
```
6. IMGUI
imgui 使用unicode编码,支持 utf-8(猜想是openGL 将utf-8转换为utf-16),不支持gb2312
___lc_codepage_func() : C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\locale.h
* 原型:_ACRTIMP unsigned int __cdecl ___lc_codepage_func (void);
* 返回值: C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinNls.h
```cpp
#define CP_ACP 0 // default to ANSI code page
#define CP_OEMCP 1 // default to OEM code page
#define CP_MACCP 2 // default to MAC code page
#define CP_THREAD_ACP 3 // current thread's ANSI code page
#define CP_SYMBOL 42 // SYMBOL translations #define CP_UTF7 65000 // UTF-7 translation
#define CP_UTF8 65001 // UTF-8 translation
```
AreFileApisANSI:
# GetOpenFileName
* 原型:BOOL GetOpenFileName(LPOPENFILENAME );
* 功能:显示打开文件对话框,返回所选文件的完整文件名(“\\\\":文件分割符;gb2312编码)
* 引用库:comdlg32.lib
* 头文件:commdlg.h
* 参数说明
* OPNEFILENAME
| 名称 | 说明 |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| lStructSize | 本结构体的长度,单位:字节 |
| hwndOwner | 本对话框父窗口
可以是任意有效窗口句柄;没有父窗口是为NULL |
| hInstance | 1. 如果flag设置为OPN_ENABLETEMPLATEHANDLE,hInstance是一个包含对话框模板的内存对象的句柄
2. 如果flag设置为OPN_ENABLETEMPLATE,hInstance是一个包含对话框模板的模块的句柄,模板名为 lpTemplateName成员指定
3. 如果flag没有设置为以上任意两个标志,hInstance成员被忽略
4. 如果flag设置为OFN_EXPLORER,系统将使用指定模板创建一个对话框(Explorer风格)
5. 如果flag没有被设置为OFN_EXPLORER, 系统将使用模板创建一个就风格的对话框 |
| lpstrFilter | 1. “以null结尾的筛选器对”组成的字符串,字符串最后必须以“\0\0"结尾。
2. 格式:"显示字符串\0筛选器模板字符串\0", 例如: "TEXT Files\0*.TXT\0\0"
3. 一个显示字符串可以同时对应多个筛选器模板字符串,各模板用";"分割,例如:"Text Files\0*.TXT;*.DOC;*.BAK\0\0"
4. 筛选器模板字符串不能包含空格
5. 如果为NULL, 对话框不显示任何筛选器 |
| lpstrCustomFilter | 1.一个指向静态缓冲区的指针,buffer包含一对以null结尾的筛选器字符串,用于保留用户选择的筛选器模式字符串。
2.筛选器字符串对的第一个字符串是显示字符串,用于描述自定义筛选器;第二个字符串是用户选择的筛选器模式
3.应用杆程序第一次创建本对话框时,用户指定第一个字符串,可以为任意非空字符串。当用户选择一个文件,对话框赋值了当前的筛选器模式到第二个字符串,保存的筛选器模式可以是lpstrFilter中的任意一个,也可以是用户输入的筛选模式。
4. 下一次对话框被创建时,系统使用上一次的字符串初始化用户自定义的筛选器。
5.如果 nFilterIndex 设置为0, 对话框将使用自定义的筛选器。
6. 当设置为NULL 时,对话框不保存用户自定义的筛选模式;当设为NULL是,nMaxCustFilter成员必须被指定,单位是TCHAR. |
| nMaxCustFilter | 指定lpstrCustomFilter buffer的大小,单位是TCHAR;
buffer 至少40个字符长;如果lpstrCustomFilter是NULL,此成员被忽略 |
| nFilterIndex | 1. 指定文件类型控件所选择的筛选器索引;
2. lpstrFilter如果包含若干对筛选器,第一对的索引为1,第二对的索引为2,以此类推;
3. 0 指示 lpstrCustomFilter指定的自定义筛选器;
4. 用户可以通过设置index指定筛选器对;
5. 如果用户选择了文件,index返回当前显示的筛选器;
6. 如果index为0,lpstrCustomFilter为NULL, 系统使用lpstrFilter中的第一个筛选器。
7. 如果 index为0, lpstrCustomFilter, lpstrFilter 都为NULL, 系统将不会使用任何筛选器,并且在对话框的文件列表控件中不会显示任何文件。 |
| lpstrFile | 1. 指向“文件名”编辑控件的初始字符buffer的指针
2. 第一个字符必须为NULL,如果没有必要初始化;
3. 当 GetOpenFileName 或者 GetSaveFileName 返回成功时,这个buffer包含所选文件的驱动器,路径,文件名和扩展名;
4. 如果 flag设置为 ALLOWMULTISELECT, 用户可以选择多个文件,buffer中包含当前目录,加上所选文件的文件名。
4.1对于Explorer风格的对话框,目录和文件名字符串是用 NULL分隔,在最后一个文件名末尾会有一个额外的NULL(形如 "dir\0file1\0file2\0\0"), 文件名为长文件名,带空格;
4.2 对于旧风格的对话框,字符串用空格分隔,文件名使用短文件名,可以使用 FindFirstFile 函数转换长、短文件名。
4.3 如果用户只选择一个文件, lpstrFile在路径和文件名中间没有分隔
5. 如果buffer分配过小,函数将返回FALSE,调用CommDlgExtendedError 函数将返回 FNERR_BUFFERTOOSMALL. 这种情况下,lpstrFile的前两个字节包含了需求的buffer大小,单位:字节或字符 |
| nMaxFile | 1. 指定lpstrFile buffer的大小,单位:TCHAR. buffer必须足够大,保证可以存放路径和文件名字符串,
2. 如果buffer分配过小, GetOpenFileName() & GetSaveFileName()将会返回false。
3.buffer的大小至少为256字符长 |
| lpstrFileTitle
[out] | 指向 接收选定文件和扩展名的 buffer指针,可以为空 |
| nMaxFileTitle | lpstrFileTitle buffer的大小,单位 TCHAR, 当lpstrFileTitle为空时,此参数忽略 |
| lpstrInitialDir | 指向初始路径的字符串。选择初始路径的算法如下:
1. 如果lpstrFile包含路径,此路径为初始路径
2. 否则, lpstrInitialDir指定初始路径;
3. 否则,此应用程序如果之前使用了“打开”或“保存”对话框,则以最近一次使用的目录的初始目录。如果长时间没有运行此程序,保存的最近使用目录将会被丢弃;
4. 如果lpstrinitialDir为NULL,并且当前路径包含筛选器指定类型的文件,则初始路径为当前目录
5. 否则,当前路径为当前用户的个人目录
6.否则, 初始目录是桌面文件夹 |
| lpstrTitle | 对话框标题栏字符串。如果当前成员为NULL,则系统使用默认标题(“打开”或"保存") |
| Flags | 一组用于初始化对话框的位标志。当对话框返回时,它设置为这些标志来指示用户输入。可以使用以下标志组合:
1. OFN_ALLOWMULTISELECT: 在"文件名“列表中可以多选文件。nFileOffset参数表示相对于第一个文件名的偏移,单位:字节或字符数。nFileExtension未使用。如果为旧风格对话框使用了自定义模板,定义文件名表框时,必须包含LBS_EXTENDEDSEL;
2. OFN_CREATEPROMPT: 如果用户指定的文件不存在,此标志提示用户创建文件。如果用户选择创建此文件,此对话框关闭,程序返回指定的名字,否则次对话框保持打开,如果使用了OFN_ALLOWMULTISELECT标志,此对话框允许用户指定一个不存在的文件。
3. OFN_DONTADDTORECENT: 防止系统将用户选择文件加入的用户最近使用文档列表。检索此目录的位置,调用SHGetSpecialFolderLocation函数,并设置CSIDL_RECENT标志。
4. OFN_ENALBEHOOK:允许使用 lpfnHOOK参数指定的钩子函数。
5. OFN_ENABLEINCLUDENOTIFY: 用户打开文件夹时,对话框发送 CDN_INCLUDEITEM通知消息给 OFNHookProc 钩子处理函数。对话框为新打开的文件夹中每一项内容发布一条通知。这些通知消息允许你控制哪些项目显示在文件夹项目列表
6. OFN_ENABLESIZING: 允许使用鼠标和键盘改变explorer风格的对话框的大小。缺省情况下,explorer风格的“打开”和“保存”对话框允许对话框被改变大小,不论此标志是否被设置。此标志在用户提供了钩子处理进程或自定义模板时才是必要的。 旧风格的对话框不允许改变大小。
7. OFN_ENABLETEMPLATE:表示 lpTemplateName指向一个对话框资源的名字,对话框资源包含在 hInstance指定的模块。如果OFN_EXPLORER被设置,系统将创建一个explorer风格的对话框。如果OFN_EXPLORER未设置,系统将创建一个旧风格的对话框。
8.OFN_ENABLETEMPLATEHANDLE: 表示hInstance标志一个包含对话框模板的数据块。如果设置此标志,系统忽略lpTemplateName参数。
9. OFN_EXPLORER: 表示任何定制“打开”“保存”对话框使用 explorer风格定制方式。更多信息查看 Explorer-STYLE hook procedures 和 Explorer-Style Custom Templates. 默认情况下,对话框使用explorer风格的用户接口不论此标志是否被设置,此标志仅仅在用户提供了自定义模板或钩子函数或设置了OFN_ALLOWMULTISELECT标志。如果想要使用旧风格的用户接口,不要设置OFN_EXPLORER并且使用旧风格模板或钩子函数。如果你使用了旧风格,但是不需要一个定义模板或者钩子函数,那就提供一个简单返回FALSE的钩子函数。
10.OFN_EXTENSIONDIFFRENT:用户键入的文件扩展名不同于 **lpstrDefExt** 指定的扩展名。 如果 **lpstrDefExt** 为 **NULL** ,则函数不使用此标志。
11.OFN_FILEMUSTEXIST: 用户只能在“文件名”条目字段中键入现有文件 **的名称** 。 如果指定了此标志,并且用户输入了无效的名称,则对话框过程会在消息框中显示警告。 如果指定了此标志,则还会使用 **OFN_PATHMUSTEXIST** 标志。 此标志可以在 **“打开** ”对话框中使用。 它不能与 **“另存为** ”对话框一起使用。
12.**OFN_FORCESHOWHIDDEN: 强制显示系统和隐藏文件,从而替代用户设置以显示或不显示隐藏的文件。 但是,不会显示同时标记为 system 和 hidden 的文件**
13.**OFN_HIDEREADONLY: 隐藏“**只读**检查框**
14.**OFN_LONGNAMES:对于旧式对话框,此标志会导致对话框使用长文件名。 如果未指定此标志,或者如果还设置了 **OFN_ALLOWMULTISELECT** 标志,则旧式对话框使用 (8.3 格式的短文件名) 带空格的文件名。 资源管理器样式对话框将忽略此标志,并始终显示长文件名。**
15.**OFN_NOCHANGEDIR** :如果用户在搜索文件时更改了目录,则将当前目录还原为其原始值。此标志对 [GetOpenFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getopenfilenamea) 无效。
16.**OFN_NODEREFERENCELINKS:指示对话框返回所选快捷方式的路径和文件名 (。LNK) 文件。 如果未指定此值,对话框将返回快捷方式引用的文件的路径和文件名。**
17.**OFN_NOLONGNAMES: 对于旧样式的对话框,此标志会导致对话框使用 (8.3 格式的短文件名) 。 资源管理器样式对话框将忽略此标志,并始终显示长文件名。**
18.**OFN_NONETWORKBUTTON**: 隐藏和禁用“ **网络** ”按钮。
19.**OFN_NOREADONLYRETURN: 返回的文件未选中“**只读**检查框,并且不在受写保护的目录中。**
20.**OFN_NOTESTFILECREATE 在关闭对话框之前,不会创建文件。 如果应用程序将文件保存在 create-nonmodify 网络共享上,则应指定此标志。 当应用程序指定此标志时,库不会检查写入保护、完整磁盘、打开的驱动器门或网络保护。 使用此标志的应用程序必须小心执行文件操作,因为文件在关闭后无法重新打开**
21.**OFN_NOVALIDATE** :通用对话框允许返回的文件名中包含无效字符。 通常,调用应用程序使用挂钩过程,该过程使用 [FILEOKSTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/fileokstring) 消息检查文件名。 如果编辑控件中的文本框为空或只包含空格,则会更新文件和目录的列表。 如果编辑控件中的文本框包含任何其他内容, **则 nFileOffset** 和 **nFileExtension** 将设置为通过分析文本生成的值。 不会向文本添加默认扩展名,也不会将文本复制到 **lpstrFileTitle** 指定的缓冲区。 如果 **nFileOffset** 指定的值小于零,则文件名无效。 否则,文件名有效,可以使用 **nFileExtension** 和 **nFileOffset** ,就像未指定 **OFN_NOVALIDATE** 标志一样。
22.**OFN_OVERWRITEPROMPT:如果所选文件已存在,则会导致“ **另存为** ”对话框生成消息框。 用户必须确认是否覆盖文件。**
23.**OFN_PATHMUSTEXIST**:用户只能键入有效路径和文件名。 如果使用此标志,并且用户在“ **文件名** ”条目字段中键入了无效的路径和文件名,则对话框函数会在消息框中显示警告。
24.**OFN_READONLY:在创建对话框时,首先选择“**只读**检查框。 此标志指示关闭对话框时**“只读**检查框的状态。**
25.**OFN_SHAREAWARE**:指定如果由于网络共享冲突导致 [对 OpenFile](https://learn.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-openfile) 函数的调用失败,则忽略该错误,并且对话框将返回所选文件名。 如果未设置此标志,则当用户指定的文件名发生网络共享冲突时,对话框会通知挂钩过程。 如果设置 **OFN_EXPLORER** 标志,对话框会将 [CDN_SHAREVIOLATION](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/cdn-shareviolation) 消息发送到挂钩过程。 如果未设置 **OFN_EXPLORER** ,对话框会将 [SHAREVISTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/sharevistring) 注册的消息发送到挂钩过程。
26.**OFN_SHOWHELP:使对话框显示“ **帮助** ”按钮。 **hwndOwner** 成员必须指定用于接收用户单击“帮助**”按钮**时对话框发送的 [HELPMSGSTRING](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/helpmsgstring) 注册消息的窗口。 当用户单击“ **帮助** ”按钮时,资源管理器样式对话框会向挂钩过程发送[CDN_HELP](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/cdn-help)通知消息。** |
| nFileOffset
[out] | 1. 从路径开头到**lpstrFile** 指向的字符串中文件名的从零开始的偏移量(以字符为单位)。
2. 对于 ANSI 版本,这是字节数;对于 Unicode 版本,这是字符数。
3. 例如,如果 **lpstrFile** 指向以下字符串“c:\dir1\dir2\file.ext”,则此成员包含值 13 以指示“file.ext”字符串的偏移量。
4. 如果用户选择多个文件, **则 nFileOffset** 是第一个文件名的偏移量。 |
| nFileExtension
[out] | 1. 从路径开头到**lpstrFile** 指向的字符串中文件扩展名的从零开始的偏移量(以字符为单位)。
2. 对于 ANSI 版本,这是字节数;对于 Unicode 版本,这是字符数。
3. 通常,文件扩展名是最后一个点 (".")之后的子字符串。
4. 例如,txt 是文件名readme.txt的扩展名,html 是 readme.txt.html 的扩展名。
5. 因此,如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt”,则此成员包含值 20。
6. 如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt.html”,则此成员包含值 24。
7. 如果 **lpstrFile** 指向字符串“c:\dir1\dir2\readme.txt.html.”,则此成员包含值 29。
8. 如果 **lpstrFile** 指向不包含任何“.”字符(如“c:\dir1\dir2\readme”)的字符串,则此成员包含零。 |
| lpstrDefExt | 默认扩展。 如果用户无法键入扩展名,[GetOpenFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getopenfilenamea) 和 [GetSaveFileName](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nf-commdlg-getsavefilenamea) 会将此扩展名追加到文件名。 此字符串可以是任意长度,但只追加前三个字符。 字符串不应包含句点 (.) 。 如果此成员为 **NULL** ,并且用户无法键入扩展,则不会追加任何扩展。 |
| lCustData | 系统传递给**由 lpfnHook** 成员标识的挂钩过程的应用程序定义数据。 当系统将 [WM_INITDIALOG](https://learn.microsoft.com/zh-cn/windows/desktop/dlgbox/wm-initdialog) 消息发送到挂钩过程时,消息的 *lParam* 参数是指向创建对话框时指定的 **OPENFILENAME** 结构的指针。 挂钩过程可以使用此指针获取 **lCustData** 值。 |
| lpfnHook | 1. 指向挂钩过程的指针。 除非**Flags** 成员包含 **OFN_ENABLEHOOK** 标志,否则将忽略此成员。
2.如果未在 **Flags** 成员中设置**OFN_EXPLORER**标志,**则 lpfnHook** 是指向接收用于对话框的消息[的 OFNHookProcOldStyle](https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/legacy/ms646932(v=vs.85)) 挂钩过程的指针。挂钩过程返回 **FALSE** 以将消息传递到默认对话框过程,或 **返回 TRUE** 以丢弃消息。
3.如果设置了 **OFN_EXPLORER** , **则 lpfnHook** 是指向 [OFNHookProc](https://learn.microsoft.com/zh-cn/windows/desktop/api/commdlg/nc-commdlg-lpofnhookproc) 挂钩过程的指针。 挂钩过程接收从对话框发送的通知消息。 挂钩过程还会接收通过指定子对话模板定义的任何其他控件的消息。 挂钩过程不会接收用于默认对话框的标准控件的消息。 |
| lpTemplateName | 模块中由**hInstance** 成员标识的对话模板资源的名称。 对于编号对话框资源,它可以是 [MAKEINTRESOURCE](https://learn.microsoft.com/zh-cn/windows/desktop/api/winuser/nf-winuser-makeintresourcea) 宏返回的值。 除非在 **Flags** 成员中设置了**OFN_ENABLETEMPLATE**标志,否则将忽略此成员。 如果设置了 **OFN_EXPLORER** 标志,则系统会使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子级。 如果未设置 **OFN_EXPLORER** 标志,系统将使用该模板创建替换默认对话框的旧样式对话框。 |
| pvReserved | 此成员是保留的。 |
| dwReserved | 此成员是保留的。 |
| FlagsEx | 可用于初始化对话框的一组位标志。 目前,此成员可以为零或以下标志。
**OFN_EX_NOPLACESBAR**:如果设置了此标志,则不显示位置栏。 如果未设置此标志,资源管理器样式的对话框将包含包含常用文件夹(如收藏夹和桌面)图标的位置栏 |
| | |
| - | - |

# 附录1:code page identifiers
NOTE: ANSI code pages can be different on different computers, or can be changed for a
single computer, leading to data corruption. For the most consistent results,
applications should use Unicode, such as UTF-8 (code page 65001) or UTF-16,
instead of a specific code page.
| Identifier | .NET Name | Additional information |
| :---------------------- | :---------------------- | :-------------------------------------------------------------------------- |
| 037 | IBM037 | IBM EBCDIC US-Canada |
| 437 | IBM437 | OEM United States |
| 500 | IBM500 | IBM EBCDIC International |
| 708 | ASMO-708 | Arabic (ASMO 708) |
| 709 | | Arabic (ASMO-449+, BCON V4) |
| 710 | | Arabic - Transparent Arabic |
| 720 | DOS-720 | Arabic (Transparent ASMO); Arabic (DOS) |
| 737 | ibm737 | OEM Greek (formerly 437G); Greek (DOS) |
| 775 | ibm775 | OEM Baltic; Baltic (DOS) |
| 850 | ibm850 | OEM Multilingual Latin 1; Western European (DOS) |
| 852 | ibm852 | OEM Latin 2; Central European (DOS) |
| 855 | IBM855 | OEM Cyrillic (primarily Russian) |
| 857 | ibm857 | OEM Turkish; Turkish (DOS) |
| 858 | IBM00858 | OEM Multilingual Latin 1 + Euro symbol |
| 860 | IBM860 | OEM Portuguese; Portuguese (DOS) |
| 861 | ibm861 | OEM Icelandic; Icelandic (DOS) |
| 862 | DOS-862 | OEM Hebrew; Hebrew (DOS) |
| 863 | IBM863 | OEM French Canadian; French Canadian (DOS) |
| 864 | IBM864 | OEM Arabic; Arabic (864) |
| 865 | IBM865 | OEM Nordic; Nordic (DOS) |
| 866 | cp866 | OEM Russian; Cyrillic (DOS) |
| 869 | ibm869 | OEM Modern Greek; Greek, Modern (DOS) |
| 870 | IBM870 | IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin |
| 2 | | |
| 874 | windows-874 | ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) |
| 875 | cp875 | IBM EBCDIC Greek Modern |
| 932 | shift_jis | ANSI/OEM Japanese; Japanese (Shift-JIS) |
| 936 | gb2312 | ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified |
| (GB2312) | | |
| 949 | ks_c_5601-1987 | ANSI/OEM Korean (Unified Hangul Code) |
| 950 | big5 | ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese |
| Traditional (Big5) | | |
| 1026 | IBM1026 | IBM EBCDIC Turkish (Latin 5) |
| 1047 | IBM01047 | IBM EBCDIC Latin 1/Open System |
| 1140 | IBM01140 | IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) |
| 1141 | IBM01141 | IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC |
| (Germany-Euro) | | |
| 1142 | IBM01142 | IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC |
| (Denmark-Norway-Euro) | | |
| 1143 | IBM01143 | IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC |
| (Finland-Sweden-Euro) | | |
| 1144 | IBM01144 | IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) |
| 1145 | IBM01145 | IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC |
| (Spain-Euro) | | |
| 1146 | IBM01146 | IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC |
| (UK-Euro) | | |
| 1147 | IBM01147 | IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) |
| 1148 | IBM01148 | IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC |
| (International-Euro) | | |
| 1149 | IBM01149 | IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC |
| (Icelandic-Euro) | | |
| 1200 | utf-16 | Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only |
| to managed applications | | |
| 1201 | unicodeFFFE | Unicode UTF-16, big endian byte order; available only to managed |
| applications | | |
| 1250 | windows-1250 | ANSI Central European; Central European (Windows) |
| 1251 | windows-1251 | ANSI Cyrillic; Cyrillic (Windows) |
| 1252 | windows-1252 | ANSI Latin 1; Western European (Windows) |
| 1253 | windows-1253 | ANSI Greek; Greek (Windows) |
| 1254 | windows-1254 | ANSI Turkish; Turkish (Windows) |
| 1255 | windows-1255 | ANSI Hebrew; Hebrew (Windows) |
| 1256 | windows-1256 | ANSI Arabic; Arabic (Windows) |
| 1257 | windows-1257 | ANSI Baltic; Baltic (Windows) |
| 1258 | windows-1258 | ANSI/OEM Vietnamese; Vietnamese (Windows) |
| 1361 | Johab | Korean (Johab) |
| 10000 | macintosh | MAC Roman; Western European (Mac) |
| 10001 | x-mac-japanese | Japanese (Mac) |
| 10002 | x-mac-chinesetrad | MAC Traditional Chinese (Big5); Chinese Traditional (Mac) |
| 10003 | x-mac-korean | Korean (Mac) |
| 10004 | x-mac-arabic | Arabic (Mac) |
| 10005 | x-mac-hebrew | Hebrew (Mac) |
| 10006 | x-mac-greek | Greek (Mac) |
| 10007 | x-mac-cyrillic | Cyrillic (Mac) |
| 10008 | x-mac-chinesesimp | MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) |
| 10010 | x-mac-romanian | Romanian (Mac) |
| 10017 | x-mac-ukrainian | Ukrainian (Mac) |
| 10021 | x-mac-thai | Thai (Mac) |
| 10029 | x-mac-ce | MAC Latin 2; Central European (Mac) |
| 10079 | x-mac-icelandic | Icelandic (Mac) |
| 10081 | x-mac-turkish | Turkish (Mac) |
| 10082 | x-mac-croatian | Croatian (Mac) |
| 12000 | utf-32 | Unicode UTF-32, little endian byte order; available only to managed |
| applications | | |
| 12001 | utf-32BE | Unicode UTF-32, big endian byte order; available only to managed |
| applications | | |
| 20000 | x-Chinese_CNS | CNS Taiwan; Chinese Traditional (CNS) |
| 20001 | x-cp20001 | TCA Taiwan |
| 20002 | x_Chinese-Eten | Eten Taiwan; Chinese Traditional (Eten) |
| 20003 | x-cp20003 | IBM5550 Taiwan |
| 20004 | x-cp20004 | TeleText Taiwan |
| 20005 | x-cp20005 | Wang Taiwan |
| 20105 | x-IA5 | IA5 (IRV International Alphabet No. 5, 7-bit); Western European |
| (IA5) | | |
| 20106 | x-IA5-German | IA5 German (7-bit) |
| 20107 | x-IA5-Swedish | IA5 Swedish (7-bit) |
| 20108 | x-IA5-Norwegian | IA5 Norwegian (7-bit) |
| 20127 | us-ascii | US-ASCII (7-bit) |
| 20261 | x-cp20261 | T.61 |
| 20269 | x-cp20269 | ISO 6937 Non-Spacing Accent |
| 20273 | IBM273 | IBM EBCDIC Germany |
| 20277 | IBM277 | IBM EBCDIC Denmark-Norway |
| 20278 | IBM278 | IBM EBCDIC Finland-Sweden |
| 20280 | IBM280 | IBM EBCDIC Italy |
| 20284 | IBM284 | IBM EBCDIC Latin America-Spain |
| 20285 | IBM285 | IBM EBCDIC United Kingdom |
| 20290 | IBM290 | IBM EBCDIC Japanese Katakana Extended |
| 20297 | IBM297 | IBM EBCDIC France |
| 20420 | IBM420 | IBM EBCDIC Arabic |
| 20423 | IBM423 | IBM EBCDIC Greek |
| 20424 | IBM424 | IBM EBCDIC Hebrew |
| 20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC Korean Extended |
| 20838 | IBM-Thai | IBM EBCDIC Thai |
| 20866 | koi8-r | Russian (KOI8-R); Cyrillic (KOI8-R) |
| 20871 | IBM871 | IBM EBCDIC Icelandic |
| 20880 | IBM880 | IBM EBCDIC Cyrillic Russian |
| 20905 | IBM905 | IBM EBCDIC Turkish |
| 20924 | IBM00924 | IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) |
| 20932 | EUC-JP | Japanese (JIS 0208-1990 and 0121-1990) |
| 20936 | x-cp20936 | Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) |
| 20949 | x-cp20949 | Korean Wansung |
| 21025 | cp1025 | IBM EBCDIC Cyrillic Serbian-Bulgarian |
| 21027 | | (deprecated) |
| 21866 | koi8-u | Ukrainian (KOI8-U); Cyrillic (KOI8-U) |
| 28591 | iso-8859-1 | ISO 8859-1 Latin 1; Western European (ISO) |
| 28592 | iso-8859-2 | ISO 8859-2 Central European; Central European (ISO) |
| 28593 | iso-8859-3 | ISO 8859-3 Latin 3 |
| 28594 | iso-8859-4 | ISO 8859-4 Baltic |
| 28595 | iso-8859-5 | ISO 8859-5 Cyrillic |
| 28596 | iso-8859-6 | ISO 8859-6 Arabic |
| 28597 | iso-8859-7 | ISO 8859-7 Greek |
| 28598 | iso-8859-8 | ISO 8859-8 Hebrew; Hebrew (ISO-Visual) |
| 28599 | iso-8859-9 | ISO 8859-9 Turkish |
| 28603 | iso-8859-13 | ISO 8859-13 Estonian |
| 28605 | iso-8859-15 | ISO 8859-15 Latin 9 |
| 29001 | x-Europa | Europa 3 |
| 38598 | iso-8859-8-i | ISO 8859-8 Hebrew; Hebrew (ISO-Logical) |
| 50220 | iso-2022-jp | ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) |
| 50221 | csISO2022JP | ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte |
| Kana) | | |
| 50222 | iso-2022-jp | ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - |
| SO/SI) | | |
| 50225 | iso-2022-kr | ISO 2022 Korean |
| 50227 | x-cp50227 | ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) |
| 50229 | | ISO 2022 Traditional Chinese |
| 50930 | | EBCDIC Japanese (Katakana) Extended |
| 50931 | | EBCDIC US-Canada and Japanese |
| 50933 | | EBCDIC Korean Extended and Korean |
| 50935 | | EBCDIC Simplified Chinese Extended and Simplified Chinese |
| 50936 | | EBCDIC Simplified Chinese |
| 50937 | | EBCDIC US-Canada and Traditional Chinese |
| 50939 | | EBCDIC Japanese (Latin) Extended and Japanese |
| 51932 | euc-jp | EUC Japanese |
| 51936 | EUC-CN | EUC Simplified Chinese; Chinese Simplified (EUC) |
| 51949 | euc-kr | EUC Korean |
| 51950 | | EUC Traditional Chinese |
| 52936 | hz-gb-2312 | HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) |
| 54936 | GB18030 | **Windows XP and later:**GB18030 Simplified Chinese (4 byte); Chinese |
| Simplified (GB18030) | | |
| 57002 | x-iscii-de | ISCII Devanagari |
| 57003 | x-iscii-be | ISCII Bengali |
| 57004 | x-iscii-ta | ISCII Tamil |
| 57005 | x-iscii-te | ISCII Telugu |
| 57006 | x-iscii-as | ISCII Assamese |
| 57007 | x-iscii-or | ISCII Oriya |
| 57008 | x-iscii-ka | ISCII Kannada |
| 57009 | x-iscii-ma | ISCII Malayalam |
| 57010 | x-iscii-gu | ISCII Gujarati |
| 57011 | x-iscii-pa | ISCII Punjabi |
| 65000 | utf-7 | Unicode (UTF-7) |
| 65001 | utf-8 | Unicode (UTF-8) |