我正在開發一個帶有 Win32 API 檔案編輯器示例的基本文本編輯器程式,使用來自 bloodshed.net 的 Dev-C 。
在對話框中選擇文本時如何更改文本顏色ChooseFont()?在該對話框中,除顏色更改選項外,一切正常。
下面是我的代碼。選擇字體對話框,switch如果我從選單格式和字體中呼叫該函式:
CHOOSEFONT cf = {sizeof(CHOOSEFONT)};
LOGFONT lf;
GetObject(g_hFont, sizeof(LOGFONT), &lf);
cf.Flags = CF_EFFECTS | CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT;
cf.hwndOwner = g_hwnd;
cf.lpLogFont = &lf;
cf.rgbColors = g_editcolor;
if (!ChooseFont(&cf))
return;
HFONT hf = CreateFontIndirect(&lf);
if (hf)
{
g_hFont = hf;
SendMessage(g_hEdit, WM_SETFONT, (WPARAM)g_hFont, TRUE);
}
g_editcolor = cf.rgbColors;
uj5u.com熱心網友回復:
字體沒有顏色。設備背景關系具有分配的顏色,它在使用字體呈現文本時使用該顏色。
要為標準 EDIT 控制元件設定文本顏色,請讓父視窗處理WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC視窗訊息:
當控制元件即將被繪制時,非只讀或禁用的編輯控制元件會向其父視窗發送 WM_CTLCOLOREDIT 訊息。通過回應此訊息,父視窗可以使用指定的設備背景關系句柄來設定編輯控制元件的文本和背景顏色。
靜態控制元件或只讀或禁用的編輯控制元件在控制元件即將被繪制時將 WM_CTLCOLORSTATIC 訊息發送到其父視窗。通過回應此訊息,父視窗可以使用指定的設備背景關系句柄來設定靜態控制元件的文本前景色和背景色。
用于SelectObject()將您分配HFONT給提供的HDC,并HDC使用 設定 的文本顏色SetTextColor()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532621.html
標籤:C 温纳皮
