正文

【原】按钮的自绘2008-01-30 16:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/32498.html

分享到:

OnDrawItem 注意如果在CButton基础上有虚函数 在类内直接通过该消息修改外观 有了hDC,CDC也有了,CDC有了,自绘还会远吗? void CTestDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC ButtonDC; CBitmap bitmapTrans; BITMAP bmp; CRect rc; CDC mem;  ButtonDC.Attach(lpDrawItemStruct->hDC); mem.CreateCompatibleDC(&ButtonDC); rc=lpDrawItemStruct->rcItem; UINT state = lpDrawItemStruct->itemState; if(state & ODS_FOCUS) {  bitmapTrans.LoadBitmap(IDB_GETFOCUS);  bitmapTrans.GetBitmap(&bmp);  CBitmap  * old=mem.SelectObject(&bitmapTrans);  ButtonDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);  mem.SelectObject(old);  bitmapTrans.DeleteObject();  ButtonDC.SetBkMode(TRANSPARENT);  ButtonDC.DrawText("已选中",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);   } else {  bitmapTrans.LoadBitmap(IDB_GETFOCUS);  CBitmap *old2 =mem.SelectObject(&bitmapTrans);  bitmapTrans.GetBitmap(&bmp);  CBitmap *old=mem.SelectObject(&bitmapTrans);  ButtonDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);  ButtonDC.SetBkMode(TRANSPARENT);  ButtonDC.DrawText("未选中",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);  mem.SelectObject(old2);  bitmapTrans.DeleteObject(); }  CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);}

阅读(6581) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册