设为首页 加入收藏

TOP

对话方块(七十九)
2010-12-30 21:13:56 】 浏览:57539
Tags:对话 方块
件,那么OPENFILENAME的nFilterIndex栏位反映出使用者的选择。由於该结构是静态变数,下次启动对话方块时,筛选条件将被设定为选中的档案型态。

POPFILE.C中的PopFileSaveDlg函式与此类似,它将Flags参数设定为OFN_OVERWRITEPROMPT,并呼叫GetSaveFileName启动「File Save」对话方块。OFN_OVERWRITEPROMPT旗标导致显示一个讯息方块,如果被选档案已经存在,那么将询问使用者是否覆盖该档案。

Unicode档案I/O
 

对於本书中的大多数程式,您都不必注意Unicode和非Unicode版的区别。例如,在POPPAD3的Unicode中,编辑控制项将保留Unicode文字和使用Unicode字串的所有通用对话方块。例如,当程式需要搜索和替换时,所有的操作都会处理Unicode字串,而不需要转换。

不过,POPPAD3得处理档案I/O,也就是说,程式不能闭门造车。如果Unicode版的POPPAD3获得了编辑缓冲区的内容并将其写入磁片,档案将是使用Unicode存放的。如果非Unicode版的POPPAD3读取了该档案,并将其写入编辑缓冲区,其结果将是一堆垃圾。Unicode版读取由非Unicode版储存的档案时也会这样。

解决的办法在於辨别和转换。首先,在POPFILE.C的PopFileWrite函式中,您将看到Unicode版的程式将在档案的开始位置写入0xFEFF。这定义为位元组顺序标记,以表示文字档案含有Unicode文字。

其次,在PopFileRead函式中,程式用IsTextUnicode函式来决定档案是否含有位元组顺序标记。此函式甚至检测位元组顺序标记是否反向了,亦即Unicode文字档案在Macintosh或者其他使用与Intel处理器相反的位元组顺序的机器上建立的。这时,位元组的顺序都经过翻转。如果档案是Unicode版,但是被非Unicode版的POPPAD3读取,这时,文字将被WideCharToMultiChar转换。WideCharToMultiChar实际上是一个宽字元ANSI函式(除非您执行远东版的Windows)。只有这时文字才能放入编辑缓冲区。

同样地,如果档案是非Unicode文字档案,而执行的是Unicode版的程式,那么文字必须

首页 上一页 76 77 78 79 80 81 82 下一页 尾页 79/82/82
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇剪贴簿 下一篇功能表及其他资源

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目