首先说明:ANSI、UNICODE、UNICODE-BE(UNICODE BIG ENDIAN)的名称可能有歧义,以上名称来自WINDOWS记事本“另存为”对话框的【编码选择】处。
BSTR就是VB的STRING字符串,它本质上是UNICODE字符串。但讽刺的是,VB的自带控件竟然都不支持UNICODE。比如你想在中文系统上用VB
...
Private Type OPENFILENAMEW
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As Long ' 筛选条件(Unicode字符串地址)
lpstrCustomFilter As Long
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As Long '
...
Private Type OPENFILENAMEW
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As Long ' 筛选条件(Unicode字符串地址)
lpstrCustomFilter As Long
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As Long ' 存储选中文件的缓冲区地址(核心)
nMaxFile As Long ' 缓冲区最大长度(需足够大,适配多选)
lpstrFileTitle As Long
nMaxFileTitle As Long
lpstrInitialDir As Long ' 初始打开目录(可选)
lpstrTitle As Long ' 对话框标题(Unicode字符串地址)