当前选择

【勇芳软件工作室】汉化HomePreviousNext

【当前选择】是用户选择的列表项;所选文本显示在组合框的选择字段中。然而,在简单组合框或下拉组合框的情况下,当前选择只是组合框中可能的用户输入的一种形式。用户还可以在选择字段中键入文本。

当前选择由所选列表项的从零开始的索引标识。应用程序可以随时设置和检索它。当用户更改组合框的当前选择时,父窗口或对话框过程会收到通知。当应用程序更改选择时,不会通知父窗口或对话框。

当创建组合框时,不存在当前选择。如果用户编辑了选择字段的内容,这也适用于简单或者下拉组合框。要设置当前选择,应用程序将CB_SETCURSEL消息发送到组合框。应用程序还可以使用CB_SELECTSTRING消息将当前选择设置为字符串以指定字符串开头的列表项。要确定当前选择,应用程序将CB_GETCURSEL消息发送到组合框。如果没有当前选择,则该消息返回CB_ERR。

当用户在组合框中更改当前选择时,父窗口或对话框过程将在【wParam中】参数的高位字中收到带有通知消息CBN_SELCHANGEWM_COMMAND消息。结果,应用程序可以响应该通知消息并且每当用户选择列表项目时执行特定的处理。当使用CB_SETCURSEL消息设置当前选择时,不会发送此通知消息。

在下拉组合框或下拉列表框中,应用程序在处理当前选择中的更改之前等待使用关闭列表框。当需要重要的处理时,这将非常有用。例如,要根据所选驱动器更新目录列表,应用程序可以在用户选择驱动器后处理CBN_CLOSEUP消息而不是CBN_SELCHANGE来更新目录列表。

应用程序也可以处理通知消息CBN_SELENDOKCBN_SELENDCANCEL.当用户选择列表项时,系统发送CBN_SELENDOK,或选择一个项目,然后关闭列表。这表示用户已经完成,并且应该处理选择。CBN_SELENDCANCEL在用户选择项目时发送,然后选择另一个控件,在下拉列表打开时按ESCAPE键,或关闭对话框。这表示用户的选择应该被忽略。在一个简单的组合框中,CBN_SELENDOK在每个CBN_SELCHANGE消息之前发送。如果为组合框指定了WS_EX_NOPARENTNOTIFY窗口样式,则系统不会发送CBN_SELENDOK和CBN_SELENDCANCEL消息。

在一个简单的组合框中,当用户双击列表项时,系统发送CBN_DBLCLK通知消息。在下拉组合框或下拉列表中,单击单击隐藏列表,因此无法双击项。