十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最近要实现一个功能,类似Cmd等控制台窗口的样式。一个对话框中放置一个编辑框,需要在窗口开启后将编辑框的背景色设置为黑色,将其上面的字体颜色设置为白色。
10年积累的网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有大宁免费网站建设让你可以放心的选择与我们合作。
于是研究了一下,发现功能的实现很容易,需要添加WM_CTLCOLOR消息的响应函数:OnCtlColor。代码如下:
HBRUSH CShellDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 ,// TODO: 如果默认的不是所需画笔,则返回另一个画笔 。
if (pWndGetDlgCtrlID()==IDC_DISPLAY) { , pDC-SetBkColor(RGB(0,0,0)); pDC-SetTextColor(RGB(255,255,255)); hbr=(HBRUSH)GetStockObject(BLACK_BRUSH); return hbr; } return hbr; }
java.awt包中的TextField类(单行文本框)、TextArea类(多行文本框),以及javax.swing包中的JTextField类(单行文本框)、JTextArea类(多行文本框),它们都有setBackground方法来设置此文本组件的背景色。
关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色:
首先要为对话框添加消息映射,主要是:
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
ON_WM_ERASEBKGND()//背景色
ON_WM_CTLCOLOR()//设置文本等控件相关颜色
END_MESSAGE_MAP()
然后在相关代码区域添加代码:
//背景色
BOOL CXXXDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//背景色
BOOL retValue= CDialog::OnEraseBkgnd(pDC);
CRect rc;
GetClientRect(rc);
pDC-FillSolidRect(rc,RGB(230,240,250));
return retValue;
}
// 除按纽之外的其他控件,字体颜色、字体背景颜色、控件背景颜色等。
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBkDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改DC 的任何属性
//对除了按钮外的其他控件有效
if(pWnd-GetDlgCtrlID() == IDC_STATIC_TEXT )//关联控件ID
{
//设置字体颜色
pDC-SetTextColor(RGB(200,100,80));
//设置文本背景颜色
pDC-SetBkColor(RGB(230,240,250));
//设置控件背景颜色
hbr = ::CreateSolidBrush(RGB(230,240,250));
return hbr;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
java.awt包中的TextField类(单行文本框)、TextArea类(多行文本框),以及javax.swing包中的JTextField类(单行文本框)、JTextArea类(多行文本框),它们都有setBackground方法来设置此文本组件的背景色。
JTextField jtf=new JTextfield();
jtf.setForeground(Color.red);//设置文本框内文字颜色为红色
jtf.setBackground(Color.green);//设置文本框背景色为绿色