这段代码是将对话框上的几个按钮填充上颜色,但我看不出来是什么填充的。
COLORREF CColorButtonDlg::colors[8]=....
void CColorButtonDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your message handler code here and/or call default
CDC dc;
CPen nullpen;
CBrush brush;
CPen *oldpen;
CBrush *oldbrush; ////////////////画按钮/////////////////?????????????????????
nullpen.CreateStockObject(NULL_PEN);
brush.CreateSolidBrush(colors[nIDCtl-IDBC_COLORWELL1]); dc.Attach(lpDrawItemStruct->hDC);
oldpen=dc.SelectObject(&nullpen);
oldbrush=dc.SelectObject(&brush);
lpDrawItemStruct->rcItem.right++;
lpDrawItemStruct->rcItem.bottom++;
dc.Rectangle(&lpDrawItemStruct->rcItem);
dc.SelectObject(oldpen);
dc.SelectObject(oldbrush);
dc.Detach(); CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
COLORREF CColorButtonDlg::colors[8]=....
void CColorButtonDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your message handler code here and/or call default
CDC dc;
CPen nullpen;
CBrush brush;
CPen *oldpen;
CBrush *oldbrush; ////////////////画按钮/////////////////?????????????????????
nullpen.CreateStockObject(NULL_PEN);
brush.CreateSolidBrush(colors[nIDCtl-IDBC_COLORWELL1]); dc.Attach(lpDrawItemStruct->hDC);
oldpen=dc.SelectObject(&nullpen);
oldbrush=dc.SelectObject(&brush);
lpDrawItemStruct->rcItem.right++;
lpDrawItemStruct->rcItem.bottom++;
dc.Rectangle(&lpDrawItemStruct->rcItem);
dc.SelectObject(oldpen);
dc.SelectObject(oldbrush);
dc.Detach(); CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
解决方案 »
- 关于OnReceive的问题
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- 如何实现一个对话框和它其中所有元素的等比缩放?
- 网络编程中的'host foo'是什么意思?foo代表什么??
- 用ADO编成如何得到一个表的字段总数量(在线等)
- 请问友元函数怎么用?(在线等)
- 怎么得到ListControl中某个item的label值?
- 大虾请进--编译的问题
- wininet 设置HTTP代理访问网页 求助
- 网络程序问题
- 道中高手:基于单个database多表或跨库多表的视,导入sql server后,原有的程序对视的访问会有什么影响?
- 怎么FD_WRITE FD_READ一起触发了呢?
void CColorButtonDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
CPen nullpen;
CBrush brush;
CPen *oldpen;
CBrush *oldbrush; ////////////////画按钮/////////////////?????????????????????
nullpen.CreateStockObject(NULL_PEN);//预定的画笔色
brush.CreateSolidBrush(colors[nIDCtl-IDBC_COLORWELL1]);//预定的画刷颜色 dc.Attach(lpDrawItemStruct->hDC);//关联到目的DC,即按纽DC
oldpen=dc.SelectObject(&nullpen);//设置画笔
oldbrush=dc.SelectObject(&brush);//设置画刷
lpDrawItemStruct->rcItem.right++;
lpDrawItemStruct->rcItem.bottom++;//定位
dc.Rectangle(&lpDrawItemStruct->rcItem);//以画笔色为边框,画刷色为背景色画矩形
dc.SelectObject(oldpen);
dc.SelectObject(oldbrush);
dc.Detach();//以上恢复初始状态 CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
到底这个OnDrawItem它的调用顺序什么样?