目录
MSDN教程起始页:https://docs.microsoft.com/zh-cn/dotnet/standard/native-interop/
选择本地文件对话框:
数据类型映射及StructLayout
特性介绍:
https://docs.microsoft.com/zh-cn/dotnet/standard/native-interop/type-marshaling
https://docs.microsoft.com/zh-cn/dotnet/standard/native-interop/best-practices
FileDlg类的原型官方api:https://docs.microsoft.com/zh-cn/windows/win32/api/commdlg/ns-commdlg-openfilenamea
//文件对话框所需的数据结构
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] //StructLayout(LayoutKind.Sequential表示仅按顺序映射数据结构,与变量名无关
private class FileDlg
{
public int structSize = 0;
public IntPtr dlgOwner = IntPtr.Zero;
public IntPtr instance = IntPtr.Zero;
public String filter = null;
public String customFilter = null;
public int maxCustFilter = 0;
public int filterIndex = 0;
public string file = null;
public int maxFile = 0;
public String fileTitle = null;
public int maxFileTitle = 0;
public String initialDir = null;
public String title = null;
public int flags = 0;
public short fileOffset = 0;
public short fileExtension = 0;
public String defExt = null;
public IntPtr custData = IntPtr.Zero;
public IntPtr hook = IntPtr.Zero;
public String templateName = null;
public IntPtr reservedPtr &