Các kiểu List Box
Chúng ta tạo một cửa sổ con list box bằng hàm CreateWindow với lớp cửa sổ là “listbox” cùng với loại cửa sổ WS_CHILD. Tuy nhiên kiểu cửa sổ con mặt định này không gởi thông điệp WM_COMMAND đến cửa sổ cha, có nghĩa chương trình tự kiểm tra việc đánh dấu các danh mục trong list box. Vì thế, các kiểu điều khiển list box thường định nghĩa kiểu list box LBS_NOTYFY, điều này cho phép cửa sổ cha nhận thông điệp WM_COMMAND từ list box. Nếu muốn sắp xếp các mục trong list box thì sử dụng kiểu LBS_SORT.
Theo mặc định, những list box tạo ra là những list box đơn. Vì thế, nếu muốn tạo ra một list box kép (tức list box cho phép người dùng chọn nhiều dòng cùng lúc) thì phải sử dụng loại list box LBS_MULTIPLESEL.Thông thường, List box sẽ tự cập nhật khi một mục được thêm vào. Tuy nhiên có thể ngăn cản việc cập nhật này bằng kiểu LBS_NOREDRAW. Việc làm này đôi khi không thích lắm, thay vào đó chúng ta có thể sử dụng thông điệp WM_SETREDRAW để ngăn chặn tạm thời việc vẽ lại của list box.
Theo mặc định, các mục trong list box không có đường viền bao quanh khi hiển thị trên màn hình. Tuy nhiên, có thể thêm đường viền cho các mục bằng định danh cửa sổ WS_BORDER. Thêm thanh cuộn đứng vào list box bằng cách thêm định danh cửa sổ WS_VSCROLL.
Thông thường windows định nghĩa một list box gồm các thông số sau : LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER.
Ngoài ra còn có các thông số WS_SIZEBOX và WS_CAPTION dùng để thay đổi kích thước và thêm tiêu đề cho list box. Nên tạo ra một list box có chiều rộng bằng chiều dài của chuổi dài nhất trong list box cộng với chiều dài của thanh cuộn dọc. Chiều dài của thanh cuộn dọc được xác định bằng hàm.
GetSystemMetrics(SM_CXVCROLL);