当您使用CreateWindow建立清单方块子窗口时,您应该将「listbox」作为窗口类别,将WS_CHILD作为窗口样式。但是,这个内定清单方块样式不向其父窗口发送WM_COMMAND消息,这样一来,程序必须向清单方块询问其中的项目的选择状态(借助于发送给清单方块控件的消息)。所以,清单方块控件通常都包括清单方块样式标识符LBS_NOTIFY,它允许父窗口接收来自清单方块的WM_COMMAND消息。如果您希望清单方块控件对清单方块中的项目进行排序,那么您可以使用另一种常用的样式LBS_SORT。
内定情况下,清单方块是单项选择的。多项选择的清单方块相当少。如果您想建立一个多项选择清单方块,那么您可以使用样式LBS_MULTIPLESEL。通常,当给有滚动条的清单方块增加新项目时,清单方块本身会自己重画。您可以通过将样式LBS_NOREDRAW包含进去来防止这种现象。但是您也许不想使用这种样式,这时可以使用WM_SETREDRAW消息来暂时防止清单方块控件重新画过,我将在稍后讨论WM_SETREDRAW消息。
内定状态下,清单方块窗口消息处理程序只显示列表项目,它的周围没有任何边界。您可以使用窗口样式标识符WS_BORDER来加上边界。另外,您可以使用窗口样式标识符WS_VSCROLL来增加垂直滚动条,以便用鼠标来滚动条表项目。
Windows表头文件定义了一个清单方块样式,叫做LBS_STANDARD,它包含了最常用的样式,其定义如下:
(LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)