Unity C# GetSaveFileName()的实例详解

互联网 17-6-24
唉哟,这次厉害咯,网上搜罗了好久,终于被我找到汉化的保存对话框了,根据网上的一些前辈总结的内容,做了一些修改,

先放个效果图:

首先需要定义一个OpenFileName的类:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    public class OpenFileName  {  	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 = IntPtr.Zero;  	public int reservedInt = 0;  	public int flagsEx = 0;  }

  当然,也不是都用到了,只用到了一小部分,有性趣的童鞋可以个性化一下保存对话框,

然后是最重要的委托GetSaveName()方法:

public class DllUse  {  	[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]  	public static extern bool GetSaveFileName([In, Out] OpenFileName ofn);  }

  挡挡挡,最后调用一下即可:

public static void OpenDialog(Action<Stream> onSave)      {          OpenFileName ofn = new OpenFileName();          ofn.structSize = Marshal.SizeOf(ofn);                ofn.filter = "Excel (*.xls)\0*.xls\0\0";          ofn.file = new string(new char[256]);          ofn.maxFile = ofn.file.Length;          ofn.fileTitle = new string(new char[64]);          ofn.maxFileTitle = ofn.fileTitle.Length;          ofn.initialDir = UnityEngine.Application.dataPath;//默认路径ofn.title = "保存文件";          ofn.defExt = ".xls";//显示文件的类型ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;if (DllTest.GetSaveFileName(ofn))          {              dosomething();string Savepath = Path.GetDirectoryName (ofn.file);              Process.Start (Savepath);          }      }

终于搞定保存对话框汉化了,5555,也是不容易啊!

那位小伙伴有更好的方法希望可以分享给我啊!

以上就是Unity C# GetSaveFileName()的实例详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 应用
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详解.net正则表达式怎么使用?

相关资讯