簡體   English   中英

是否可以在不影響其他行的情況下更改編輯控件的字體?

[英]Is it possible to change font for an edit control without affecting the other lines?

您好,我想知道是否可以僅更改某些行的編輯控件的字體而不影響其余行:

在我的Edit control我有一個文本,但我想要一些大字體和粗體的標題和標題,而其他行的字體較小。

我試過SendMessage(hEdit, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(0, true)); 但它將整個文本設置為傳入的字體。

我認為SelectObject(hDcEdit, hFont); 但我不知道它是否正確以及如何正確。

標准的編輯控件(想想記事本)不支持您要查找的內容。 它只支持整個文本的一種字體。

您正在尋找的是RichEdit 控件(想想寫字板),特別是它的EM_SETCHARFORMAT消息,它可用於將不同的格式(包括字體、顏色等)應用於文本的不同部分。

這不適用於默認的 Editcontrol,但您可以使用 Richeditcontrol

#include <Windows.h>
#include <CommCtrl.h>

HINSTANCE relib = LoadLibrary("riched32.dll");
if (relib == NULL) {
    MessageBox(NULL, "couldn't load richedit32.dll", "", MB_ICONEXCLAMATION);

hEdit = CreateWindow(RICHEDIT_CLASS, "", WS_VISIBLE | WS_CHILD | ES_MULTILINE | 
ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_VSCROLL | WS_HSCROLL, 0, 0, 200, 200, hWnd, NULL, 
NULL, NULL);

現在將字體設置為您的 Richeditcontrol 使用:

CHARFORMAT2 cf;
memset(&cf, 0, sizeof cf);
cf.cbSize = sizeof cf;
cf.dwMask = CFM_FACE;
wsprintf(cf.szFaceName, "Arial"); //Here you can set the fontname you wont (C:/Windows/Fonts)
SendMessage(hEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM