Tôi đang cố gắng để hiểu được hành vi của một thanh công cụ Windows - đặc biệt là như thế nào các giá trị sau tương tác:của Windows Toolbar - Kiểm soát kích thước nút và padding
- kích thước của hình ảnh bitmap sử dụng
- hiệu quả kích thước của một nút trên thanh công cụ
- padding giữa hình ảnh và các nút cạnh
- chiều cao của thanh công cụ
Văn bản được hiển thị bằng một nút không liên quan trong trường hợp của tôi.
Điều tôi thực sự muốn làm là cung cấp tùy chọn cho người dùng để anh có thể chọn từ một số kích thước nút thanh công cụ (hiển thị bitmap nói, 16x16, 32x32 hoặc 48x48 pixel) và hiển thị lại thanh công cụ cho phù hợp sau tùy chọn thay đổi giá trị. Điều này được thực hiện bằng cách phá hủy danh sách hình ảnh của thanh công cụ và xây dựng lại chúng với các bitmap thích hợp. Vấn đề tôi hiện có là khi chuyển từ kích thước 16 đến 48 và quay lại kích thước 16, thanh công cụ trông hơi khác so với trước đây.
Đây là những gì các thanh công cụ trông giống như khi ứng dụng khởi động (chính xác):
Khi tôi chuyển sang kích thước 48 và ngược lại, nó trông giống như thế này (sai):
Tất cả các nút đều cao hơn trước và mỗi nút thả xuống có thêm khoảng trống xung quanh bitmap và mũi tên thả xuống của nó.
(Đối với mục đích thử nghiệm, thanh công cụ đã được tạo đủ cao để chứa tất cả kích thước nút mà không yêu cầu tăng chiều cao. Điều này là loại trừ khả năng thay đổi kích thước nút bắt nguồn từ kích thước thanh công cụ có thể thay đổi tạm thời chuyển sang kích thước 48.)
Dường như đệm bổ sung đang được hiển thị giữa bitmap nút và cạnh nút - như thể xây dựng lại thanh công cụ với các bitmap/nút lớn hơn khiến Windows tăng nội bộ ý nghĩa), nhưng không giảm nó khi tôi xây dựng lại thanh công cụ với các bitmap/nút nhỏ hơn. Tuy nhiên, việc gửi TB_GETPADDING luôn trả về 0x00060007, điều này cho biết rằng padding chuẩn (chính xác) cho bitmap 16x16 được đặt ra.
Trong một nỗ lực để giải quyết vấn đề bằng cách thiết lập padding bản thân mình, tôi thiết lập phong cách TBSTYLE_AUTOSIZE trên tất cả các nút không phân cách (điều này là cần thiết để áp dụng padding). Với phong cách này, thậm chí không cần kêu gọi TB_SETPADDING, sau khi chuyển sang kích thước 48 và ngược lại, các thanh công cụ trông như thế này:
Trong trường hợp này, chiều cao nút cũng là sai.
Câu hỏi đặt ra là: Điều gì khiến các nút được hiển thị khác nhau sau khi tạo lại danh sách hình ảnh?
Một số sang một bên lưu ý:
- Khi xây dựng các thanh công cụ, tôi gọi TB_SETBITMAPSIZE, nhưng không phải TB_SETBUTTONSIZE cũng không TB_SETPADDING, vì kích thước bitmap là tất cả tôi có, và tôi cho rằng kích thước nút sẽ được bắt nguồn một cách chính xác từ đó .
- Tôi biết rằng tôi có thể đơn giản xây dựng toàn bộ cửa sổ thanh công cụ từ đầu (không chỉ danh sách hình ảnh), nhưng muốn tránh điều đó, vì vậy tôi có thể tiếp tục làm việc với cùng một cửa sổ thanh công cụ.
- Tôi biết phong cách thanh công cụ CCS_NORESIZE (hiện được đặt) và thông báo TB_AUTOSIZE, nhưng các thử nghiệm với chúng chưa dẫn đến bất kỳ thông tin chi tiết nào.
Xin chào, bạn đang sử dụng ngôn ngữ nào? –
Steve: Tôi đang sử dụng C++. – Dabbler