我想在我的编辑框中设置一些文字,但它应该是灰色的。
有没有办法做到这一点?
我无法为此找到合适的API。
有什么建议吗?
答案 0 :(得分:2)
您可能也对EM_SETCUEBANNER edit control message感兴趣。它将使编辑控件以灰色文本显示方向而不影响用户输入。
答案 1 :(得分:2)
回复WM_CTLCOLOREDIT message并在传递的HDC上使用SetTextColor来选择文本颜色。
答案 2 :(得分:0)
答案 3 :(得分:0)
这是来自MFC应用程序(因此是pWnd),但更改为纯SDK代码相对容易:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_EDIT:
if (pWnd->GetDlgCtrlID () == IDC_MY_EDIT)
{
pDC->SetTextColor (COLOR_GRAYTEXT);
}
break;
default:
break;
}
return hbr;
}
答案 4 :(得分:0)
我刚才假设您指的是Win32 API。如果没有,请忽略我的答案。
如果要在编辑框中以灰色或不同颜色编辑/输入文本,可以参考上面的回复,告诉您如何重载OnCtlColor()。
但是如果您只是在禁用的编辑框中显示文本,那么它将默认显示灰色文本(确保编辑框不是只读的,以便您可以写入编辑框控件)。例如,如果在对话框类的OnInit()方法中包含以下行,它将禁用编辑框并以灰色显示文本:
virtual void OnInit()
{
// Assuming IDC_MY_DISABLED_EDIT is the ID you entered for the editbox
// in the dialog designer.
// the above state will disable the edit box and display text in grey.
GetDlgCtrl(IDC_MY_DISABLED_EDIT)->EnabledWindow(FALSE);
// Hello World! will be displayed in grey.
GetDlgCtrl(IDC_MY_DISABLED_EDIT)->SetWindowText(_T("Hello World!"));
}