gpt4 book ai didi

c++ - 更改按钮按下时的文本颜色 WIN32

转载 作者:太空狗 更新时间:2023-10-29 21:21:23 27 4
gpt4 key购买 nike

如何在按下按钮时更改编辑框中的文本颜色? (Win32/C++)。我知道如何更改文本字体(即在 WM_COMMANDSendMessage() 中使用WM_SETFONT)。
关于更改文本颜色,我认为我需要在WM_COMMANDWM_CTLCOLOREDITSendMessage() 之间进行交互,但不知道用什么样的参数。谢谢你。

我已经想出如何在单个按钮上执行此操作。请再问一个问题。如果我将上面的代码用于 3 个不同的按钮,它不会按预期运行。有一个片段:

case IDC_BUTTON3:
{
textFlagRed = textFlagRed;
textFlagBlue = !textFlagBlue;
textFlagGreen = !textFlagGreen;
InvalidateRect(textArea2, NULL, TRUE);
break;
}

case IDC_BUTTON4:
{
textFlagGreen = textFlagGreen;
textFlagBlue = !textFlagBlue;
textFlagRed = !textFlagRed;
InvalidateRect(textArea2, NULL, TRUE);
break;
}

case IDC_BUTTON5:
{
textFlagBlue = textFlagBlue;
textFlagRed = !textFlagRed;
textFlagGreen = !textFlagGreen;
InvalidateRect(textArea2, NULL, TRUE);
break;
}

并且在 WM_CTLCOLORSTATIC

if (textFlagRed && (HWND)lParam == textArea2)
{
HBRUSH hbr = (HBRUSH) DefWindowProc(hwnd, message, wParam, lParam);
SetTextColor((HDC) wParam, RGB(255, 0, 0));
return (BOOL) hbr;
}
else if (textFlagBlue && (HWND)lParam == textArea2)
{
HBRUSH hbr = (HBRUSH) DefWindowProc(hwnd, message, wParam, lParam);
SetTextColor((HDC) wParam, RGB(0, 0, 255));
return (BOOL) hbr;
}
else if (textFlagGreen && (HWND)lParam == textArea2)
{
HBRUSH hbr = (HBRUSH) DefWindowProc(hwnd, message, wParam, lParam);
SetTextColor((HDC) wParam, RGB(0, 255, 0));
return (BOOL) hbr;
}
break;

永远是蓝色。

最佳答案

你需要

a) 一个全局 bool 值,指示是否需要更改颜色(比如 bEditRed)

b) 按下按钮时:设置/切换 bEditRed 并使编辑框无效 InvalidateRect(hWndEdit, NULL, TRUE)

c) 在对话过程中处理“WM_CTLCOLOREDIT”消息:

case WM_CTLCOLOREDIT:
{ if (bEditRed && (HWND)lParam == hWndEdit)
{ HBRUSH hbr = (HBRUSH) DefWindowProc(hDlg, iMessage, wParam, lParam);
SetTextColor((HDC) wParam, RGB(255, 0, 0));
return (BOOL) hbr;
}
return FALSE;
}

关于c++ - 更改按钮按下时的文本颜色 WIN32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com