2010-04-13 33 views
6

Xin đừng đánh dấu nó như là một người bị mắc mưu của câu hỏi này chỉ được nêu ra:Làm cách nào để tạo nhãn in đậm và in nghiêng trong MFC?

Bold labels in MFC

câu hỏi đó không giúp tôi; vì một lý do nào đó tôi không thấy điều khiển chỉnh sửa phong phú. Thay vào đó tôi tin rằng tôi phải làm điều đó trong mã. đây là một ví dụ tôi thấy:

http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-10/msg00245.html

Vấn đề của tôi là tôi không muốn tái phát minh ra bánh xe và kiểm tra các lỗi bản thân mình hoặc thông qua QA.

Ai đó phải thực hiện việc này trước đây. Vui lòng chia sẻ mã của bạn.

Những gì tôi muốn làm là:

  • Giữ kích thước phông chữ tương tự, gia đình, vv như trong nhãn đã tạo ra, nhưng làm cho nó đậm và nghiêng là tốt.
  • Giữ chân bộ nhớ tương đối thấp (không tạo bất kỳ đối tượng không cần thiết nào mới), nhưng cũng không đưa ứng dụng vào trạng thái không nhất quán.

Tôi đánh giá cao sự trợ giúp của bạn.

+1

Nếu bạn không sử dụng một điều khiển sửa phong phú, những loại kiểm soát bạn đang sử dụng? Văn bản tĩnh? –

+1

Có, nhãn, còn gọi là văn bản tĩnh. Cảm ơn câu hỏi. –

+1

Ngoài ra, tôi thấy "Tôi không muốn làm bất kỳ công việc nào, cho tôi mã" thái độ rất thô lỗ. –

Trả lời

7

Bạn sẽ muốn thực hiện các thao tác sau trước khi điều khiển văn bản tĩnh được hiển thị trên cửa sổ chính.

  1. Lấy một handle của cửa sổ: CWnd * pwnd = GetDlgItem(IDC_LABEL);
  2. Lấy phông chữ hiện hành đối với các văn bản tĩnh: CFont * pfont = pwnd->GetFont();
  3. Lấy đặc điểm của phông chữ: LOGFONT lf; pfont->GetLogFont(&lf);
  4. Thay đổi các lĩnh vực lfWeight và lfItalic trong lf.
  5. Đặt đối tượng CFont trong cửa sổ chính, vì vậy nó sẽ tồn tại trong toàn bộ thời gian tồn tại của cửa sổ con.
  6. Khởi tạo CFont: m_font.CreateFontIndirect(&lf);
  7. Đặt font vào cửa sổ văn bản tĩnh: pwnd->SetFont(&m_font);
+0

Hóa ra, tôi cũng cần gọi hàm DeleteObject() trên phông chữ. http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/69089425-f186-47fe-9c32-baa29ac2a50c –

+0

Không, đó cũng là một ý tưởng tồi. –

+0

MFC sẽ tự động gọi DeleteObject khi đối tượng CFont bị hủy. –

Các vấn đề liên quan