调用窗口接口函数
窗口接口为应用程序提供一个丰富的函数集.整个窗口接口可直接从D访问.这儿,我们将通过用标准赢32应用接口函数弹出一个信息消息盒来描述它.和一个文件选择器对话盒
准备
第一,确保你正确安装了窗口的DMD编译器.如你想建造64位应用程序,你必须首先下载和安装可视工作室(任何支持C++开发包含表达版的版本)因为在64位窗口上dmd为了更好的跨语言一致性使用微软链接器和库.
你也会想创建或下载窗口接口绑定,因为dmd自带的窗口绑定很不完整.当要求时,你可通过从MSDN复制和粘贴函数和构原型来创建你自己的,
如你是32位的,你会想从微软取更新的.静态库文件,并把他们转换成dmd32位使用的OMF格式.这一般没必要,但如果你想用窗口远景的和更新版本的特征,就有可能.为此,首先从超传://www.微软.组模/en-我们/下载/细节.为px?标识=8279,下载窗口开发包然后从超传://数字火星.组模/(你可花$15购买)取基本工具包(BUP).在从开发包的.静态库文件用BUP的c关实现库来生成dmd的OMF格式库.
如何做...
我们执行如下步骤调用窗口接口函数:
导入 核心.系统.窗口.窗口.
创建一个打开文件结构并填充要求的字段.
调用取打开文件名来弹出文件对话.
用消息盒函数来反馈给用户.
用组件模型对话32.静态库通过把它加到dmd命令行,链接文件.
代码如下:
它如何工作...
D理解窗口调用传统.通过简单用外(窗口)声明函数原型可以调用任何窗口函数.
注意
在先前代码,你可见到外(系统).外(系统)函数在当前平台上指示系统库的调用传统实际上,即外(窗口)将用在32位窗口而外(C)将用在其他地方.
有两种处理串的窗口函数:美标和统一码.他们由在函数名上的后缀A或W指示.在C和一些D绑定中,当需要时,一个统一码宏别名名字到适当后缀.这儿,为了最大一致性和示范目的,我们显式调用W函数.
MSDN经常引用t符,t串,等等.就带函数原型,如果你用统一码或美标宏,t符的意思不同.美标,在D中,它应该是符然而统一码,它应该是宽符.
因为D串是统一码,最好用函数的W版本(它让你传递串到一个函数,且如果串都是美标它将工作;然而,如他们包含任何非美标字符,串就会崩溃.)D内置可用在窗口的宽字符串(UTF16)支持.UTF16字符类型是宽符.一个宽符类型的不变数组也称为宽串,类似于UTF8字符数组被叫做串字面量.宽串字面量由w后缀,指示例如,这是一个宽串字面量,w.宽串字面量,像串字面量,都以零结束.然而,不像串字面量,他们不自动转换到指针;所以,传递宽串字面量到窗口函数,用.针属性.为传递非字面量串到一个窗口函数,用标.utf.至UTFz!(宽符*)(你_串).这对宽串字面量和UTF8串都管用-它附加零,仅当必要时转换格式.
取打开文件名在窗口编程中使用一个常见模式;它带有一个知道其自己大小的构,作为一个实参.在C或C++中,声明这些结构将一般跟随着一个到内存设置或零内存的调用.这在D中没必要因为D,不像C,自动初化变量.然而,要记住初化任何静符/宽符数组或浮成员因为D默认初化他们到无效值而不是零(它使得用未初化值尽快触发错误).因此我们置文件名缓冲[0]=0来确保它以空串结束.到串和浮数的指针默认初化为无效也可不设置.
另见
一些窗口编程样例在超传安://源码仓库.组模/安德烈2米特洛维奇/D赢编程翻译成D
在超传://d源.组织/工程/绑定/维基/窗口接口,绑定到窗口接口来替换和扩展在核心.系统.窗口.窗口发现的最小集.
领取专属 10元无门槛券
私享最新 技术干货