Tôi muốn tự động định lại kích cỡ một CButton thành chiều rộng của văn bản bên trong nó. Có cách nào được xây dựng trong để làm điều này trong MFC, hoặc một cách tính chiều rộng pixel của một số văn bản được chỉ định (để tôi có thể sử dụng CWnd::SetWindowPos
)?Nhận chiều rộng văn bản trong MFC
Trả lời
Bạn có thể sử dụng CDC::GetTextExtent để tính chiều rộng của văn bản trong một phông chữ nhất định. Sử dụng CWnd::GetDC để lấy bối cảnh thiết bị từ điều khiển hiển thị văn bản.
Thật tẻ nhạt. Bạn cần sử dụng CWnd::GetFont()
trên nút để lấy phông chữ đang sử dụng và sau đó sử dụng tiêu chuẩn GetTextText
trên đối tượng CDC
nơi bạn sẽ chọn phông chữ đó. Nó trông giống như
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
Ngoài câu trả lời @ demoncodemonkey, bạn có thể gọi CDC::DrawText với DT_CALCRECT
cờ. Bằng cách này, các văn bản sẽ không được rút ra, nhưng các CRect bạn vượt qua để chức năng sẽ có chiều rộng và chiều cao của văn bản để vẽ.
Điều này đặc biệt hữu ích nếu bạn muốn vẽ văn bản có ngắt dòng (sử dụng cờ DT_WORDBREAK
). Bạn sẽ không thể thực hiện điều đó bằng cách sử dụng CDC::GetTextExtent
.
CClientDC hdc(this);
GetRect.SetRect(0,0,iLabelWidth,0);
//
//To get Height of Lable in advance
//
hdc.DrawText(
TempData,
TempData.GetLength(),
GetRect,
DT_CALCRECT | DT_MODIFYSTRING | DT_WORDBREAK
);
- 1. SVG nhận chiều rộng phần tử văn bản
- 2. Đo chiều rộng văn bản trong Qt
- 3. định dạng chiều rộng văn bản vim
- 4. Khóa chiều rộng của hộp văn bản
- 5. Cách giới hạn chiều rộng văn bản
- 6. Cách lấy chiều rộng/chiều cao của văn bản
- 7. Đặt chiều rộng cột văn bản biến trong printf
- 8. Giới hạn chiều rộng đường viền thành chiều rộng văn bản trong một phần tử khối
- 9. Tính chiều rộng văn bản trong ActionScript và Flex
- 10. Chiều rộng đầu vào văn bản lạ trong jQuery Mobile
- 11. Nhận văn bản dựa trên chiều cao
- 12. Chiều rộng của input type = yếu tố văn bản
- 13. Kiểu hộp văn bản mặc định và chiều rộng
- 14. Chiều rộng tối đa động cho văn bản
- 15. Sự cố chiều rộng hộp văn bản - ASP.NET
- 16. jQuery: đặt chiều rộng của vùng văn bản?
- 17. Lớp văn bản Qml (chiều rộng tối đa)
- 18. Chiều rộng hộp văn bản có thể chỉnh sửa
- 19. Tính chiều rộng văn bản với PHP GD
- 20. iPhone - Điều chỉnh chiều rộng UILabel theo văn bản
- 21. 'Chiều rộng' có áp dụng cho văn bản không?
- 22. Trường nhập văn bản, bọc văn bản thay vì mở rộng theo chiều ngang
- 23. Tính kích thước văn bản theo chiều rộng của vùng văn bản
- 24. Nhận chiều rộng/chiều cao của bố cục trong Android
- 25. MFC - thay đổi màu văn bản của điều khiển văn bản cstatic
- 26. Chuyển đổi văn bản tiếng Nhật có chiều rộng sang nửa chiều rộng (zen-kaku thành han-kaku)
- 27. Android TextView và nhận dòng văn bản
- 28. đầu vào và văn bản xuất hiện chiều rộng khác nhau khi được đặt thành cùng chiều rộng?
- 29. làm thế nào để làm cho chiều rộng văn bản giống nhau trong IE và Firefox?
- 30. Làm cách nào để đặt chiều rộng TAB trong điều khiển Hộp văn bản Windows Forms?
Có sự khác biệt về hiệu suất giữa 'GetTextExtent' và' DrawText' không? – Richard