Static&edit&list

静态类别

在CreateWindow函数中指定窗口类别为「static」,就可以建立静态文字的子窗口控件。这些子窗口非常「文静」。它既不接收鼠标或键盘输入,也不向父窗口发送WM_COMMAND消息。

当在静态子窗口上移动或者按下鼠标时,这个子窗口将拦截WM_NCHITTEST消息并将HTTRANSPARENT的值传回给Windows,这将使Windows向其下层窗口,通常是它的父窗口,发送相同的WM_NCHITTEST消息。父窗口常常将该消息传递给DefWindowProc,在这里,它被转换为显示区域的鼠标消息。

静态类别也包括了三种文字样式:SS_LEFT、SS_RIGHT和SS_CENTER。它们建立左对齐、置右对齐和居中文字。文字在CreateWindow呼叫的窗口文字参数中给出,并且在以后可以用SetWindowText来改变它。当静态控件的窗口消息处理程序显示文字时,它使用DrawText函数以及DT_WORDBREAK、DT_NOCLIP和DT_EXPANDTABS参数。文字在子窗口的矩形内可以按文字进行换行。

静态类别还包括了窗口样式SS_ICON和SS_USERITEM,但是当它们被用作子窗口控件时却没有任何意义。

编辑类别

在某些方面,编辑类别是最简单的预先定义窗口类别;在另一方面,它又是最复杂的窗口类别。当使用类别名称「edit」建立子窗口时,您根据CreateWindow呼叫中的x位置、y位置、宽度和高度这些参数定义了一个矩形。此矩形含有可编辑文字。当子窗口控件拥有输入焦点时,您可以输入文字,移动光标,使用鼠标或者Shift键与一个光标键来选取部分文字,按Ctrl-X来删除所选文字或按Ctrl-C来复制所选文字、并送到剪贴簿上,按Ctrl-V键插入剪贴簿上的文字。

编辑控件的最简单的应用之一是作为单行输入区域。但是编辑控件并不仅限于单行

使用ES_MULTILINE窗口样式可以建立多行编辑控件。对于单行编辑控件,一般只可以在编辑控件矩形的尾部输入文字。要建立一个自动水平卷动的编辑控件,可以采用样式ES_AUTOHSCROLL。对一个多行编辑控件,文字会自动跳行,除非使用ES_AUTOHSCROLL样式。在这种情况下,必须按Enter键来开始新的一行。您还可以便用样式ES_AUTOVSCROLL来将垂直滚动条包括在多行编辑控件中。

在多行编辑控件中包括这些卷动样式时,也许还想给编辑控件增加卷动列。要做到这些,可以对非子窗口使用同一窗口样式标识符WS_HSCROLL和WS_VSCROLL。内定状态下,编辑控件没有边界,利用样式WS_BORDER则可以增加边界。

在编辑控件中选择文字时,Windows将选择的文字反白显示。但是当编辑控件失去输入焦点时,被选择的文字将不再被加亮。如果希望在编辑控件没有输入焦点时被选择的文字仍然被加亮,可以使用样式ES_NOHIDESEL。

发送给编辑控件的消息

SendMessage (hwndEdit, WM_CUT, 0, 0) ;      
SendMessage (hwndEdit, WM_COPY, 0, 0) ;        
SendMessage (hwndEdit, WM_CLEAR, 0, 0) ;

WM_CUT将目前选择的文字从编辑控件中移走,并将其发送到剪贴簿中;WM_COPY将选择的文字复制到剪贴簿上并保持编辑控件中的内容完好无损;WM_CLEAR将选择的内容从编辑控件中删除,但是不向剪贴簿中发送。

也可以将剪贴簿上的文字插入到编辑控件中的光标位置:

SendMessage (hwndEdit, WM_PASTE, 0, 0) ;

可以取得目前选择的起始位置和末尾位置:

SendMessage (hwndEdit, EM_GETSEL, (WPARAM) &iStart, (LPARAM) &iEnd) ;

可以选择文字:

SendMessage (hwndEdit, EM_SETSEL, iStart, iEnd) ;

可以使用别的文字来置换目前的选择内容:

SendMessage (hwndEdit, EM_REPLACESEL, 0, (LPARAM) szString) ;

清单方块类别

一个清单方块是字符串的集合,这些字符串是一个矩形中可以卷动显示的清单。-程序通过向清单方块窗口消息处理程序发送消息,可以在清单中增加或者删除字符串。当清单方块中的某项被选择时,清单方块控件就向其父窗口发送WM_COMMAND消息,父窗口也就可以确定选择的是哪一项。

一个清单方块可以是单选的,也可以是多选的,后者允许使用者从清单方块中选择多个项目。当清单方块拥有输入焦点时,其中项目的周围显示有虚线。在清单方块中,光标位置并不指明被选择的项目。被选择的项目被加亮显示,并且是反白显示的。

在单项选择的清单方块中,使用者按Spacebar键就可以选择光标所在位置的项目。方向键移动光标和目前选择指示,并且能够滚动清单方块的内容。Page Up和Page Down键也能滚动清单方块,但它移动的是光标而不是选择指示。按字母键能将光标和选择指示移到以此字母开头的第一个(或下一个)选项。也可以使用鼠标在要选择的项目上单击或者双击来选择它。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值