|
|

100精币
|
| 打开文件 | 字节集 | | |
| 易样式 | 逻辑型 | | | | 标题 | 字节集 | | | | 文件名 | 字节集 | | | | 过滤器 | 字节集 | | | | 初始目录 | 字节集 | | | | 默认文件后缀 | 字节集 | | | | 创建时提示 | 逻辑型 | | | | 文件必须存在 | 逻辑型 | | | | 目录必须存在 | 逻辑型 | | | | 不改变目录 | 逻辑型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | ofn | OPENFILENAME_w | | | | bool | 逻辑型 | | | | mark | 整数型 | | | | 局部过滤器 | 字节集 | | | | 局部文件名 | 字节集 | | | | 局部标题 | 字节集 | | | | 指针 | 整数型 | | | | 局部文件标题 | 字节集 | | |
ofn.结构大小 = 76 ofn.窗口句柄 = GetActiveWindow ()局部文件标题 = 编码_Ansi到Unicode (“Open a file”) + { 0, 0 }ofn.文件标题_指针 = 取变量数据地址 (局部文件标题 )局部过滤器 = 子字节集替换 (到字节集 (过滤器 ), { 124, 0 }, { 0, 0 }, , ) + { 0, 0 }ofn.过滤器_指针 = 取变量数据地址 (局部过滤器 )局部文件名 = 取空白字节集 (256 × 2 - 2 )lstrcpy_bin_w (局部文件名, 文件名 + { 0, 0 })ofn.文件名_指针 = 取变量数据地址 (局部文件名 )ofn.文件名最大长度 = 256 × 2 ofn.初始目录_指针 = 取变量数据地址 (初始目录 )ofn.默认扩展名_指针 = 取变量数据地址 (默认文件后缀 ) ofn.标题_指针 = 取变量数据地址 (标题 )ofn.文件标题最大长度 = 256 × 2 mark = 524288 如果真 (创建时提示 ) mark = 位或 (mark, 8192 ) 如果真 (文件必须存在 ) mark = 位或 (mark, 4096 ) 如果真 (目录必须存在 ) mark = 位或 (mark, 2048 ) 如果真 (不改变目录 ) mark = 位或 (mark, 8 )
ofn.标志 = mark 指针 = 结构体_取指针 (ofn )bool = GetOpenFileNameW (指针 )返回 (选择 (bool, 局部文件名, { }))
通用对话框改成w版本让其支持unicode用户系统电脑,但是出现一个很奇怪的问题,就是这个标题(对话框左上角自己设置的对话框标题),再ansi系统编码上面是正常全部显示,但是在unicode系统上面,会被截断显示一部分。经过测试:如果标题的指针+2之类的会从标题中间截取显示,显示长度根据总长度自动截断,由此证明了我传递过去的标题是完整的,现在怀疑点是结构体数据没有对齐,但是又玩不明白,有么有大佬根据精易模块的通用对话框改成w版本的让其支持,项目部封装的 | 变量名 | 类 型 | 静态 | 数组 | 备 注 | | FilterSpec | 字节集 | | | | dwAryLen | 整数型 | | | | aryPath | 字节集 | | 0 |
FilterSpec = 编码_Ansi到Unicode (“所有支持的图片格式”, 假) + 编码_Ansi到Unicode (“*.jpg;*.jpeg;*.jpe;*.bmp;*.gif;*.png;”, 假) + 编码_Ansi到Unicode (“JPG 格式”, 假) + 编码_Ansi到Unicode (“*.jpg;*.jpeg;*.jpe”, 假) + 编码_Ansi到Unicode (“BMP 格式”, 假) + 编码_Ansi到Unicode (“*.bmp”, 假) + 编码_Ansi到Unicode (“GIF 格式”, 假) + 编码_Ansi到Unicode (“*.gif”, 假) + 编码_Ansi到Unicode (“PNG 格式”, 假) + 编码_Ansi到Unicode (“*.png”, 假)dwAryLen = OpenWindowsDlg (假, , , FilterSpec, , 编码_Ansi到Unicode (“打开图片”, 假), , aryPath, , , ) 如果真 (取数组成员数 (aryPath ) ≤ 0 ) 返回 ()编辑框1.内容 = 编码_Unicode到Ansi (aryPath [1]) 这个同样会出现在unicode系统上面标题会被截断。搞不定了,希望热心网友花个时间写个正确的版本。再次感谢
|
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|