win32之取画刷的方法
取画刷(HBRUSH) 的六种方法2009-07-23 15:00HBRUSH hbr; 第一种: hbr= CreateSolidBrush(RGB(255,0,0)); //单色的画刷 第二种: hbr= (HBRUSH)GetStockObject(BLACK_BRUSH); //只能取特定颜色的画刷,如BLACK_BRUSH,GRAY_BRUSH等刷 第三种: hbr= CreatePatternBrush(HBITMAP hbmp); //得到位图画刷 第四种: hbr = CreateHatchBrush(int fnStyle, COLORREF clrref) //创建一种带阴影的画刷 第五种: hbr= CreateBrushIndirect(LOGBRUSH); //通过LOGBRUSH结构体来取画刷 typedef struct tagLOGBRUSH { UINT lbStyle; //画刷类型 COLORREF lbColor; //颜色 LONG lbHatch; //阴影 } LOGBRUSH, *PLOGBRUSH; 第六种: hbr= HBRUSH CreateDIBPatternBrush( //通过与设备无关位图创建一个画刷 HGLOBAL hglbDIBPacked, // handle to DIB UINT fuColorSpec // color table data ); 例如: HBRUSH CAfdView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd->GetDlgCtrlID()==IDC_STATIC1) { pDC->SetTextColor(RGB(200,0,0)); pDC->SetBkColor(RGB(0,0,255)); static HBRUSH hBrush = CreateSolidBrush(RGB(222,0,255)); return hBrush; } // TODO: Return a different brush if the default is not desired else return hbr; } 改变对话框背景色 HBRUSH CDqfDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired if(nCtlColor == CTLCOLOR_DLG) { CBrush *brush; brush = new CBrush(RGB(221,221,221)); return (HBRUSH)(brush->m_hObject); } return hbr; }
第一种方法和第二种方法自己测试了可以使用,后面的还没有测试。