我在CButton控件下派生了一个类,扩充了消息,如何在该控件上绘图???
我用了DRAWITEM(),但不响应,图画在了按扭底下?????
我用了DRAWITEM(),但不响应,图画在了按扭底下?????
解决方案 »
- 即时通讯开发
- 在图片上画矩形的问题。
- 函数如何返回一个std::vector<std::string>类型的值亚?
- 我想实现WinCVS那样得界面,如何做??
- 改变窗体背景色
- 安装vc6企业版之后需要在安装什么补丁吗?
- OLE DB取出的记录集的指针是不是服务器端指针?如何改成本地指针,因为感觉很慢
- 问大家一个愚蠢的问题
- 一个软件的安装程序需要用户参与才能完成安装,我怎样写一个程序实现自动安装(无需用户参与)
- 字符串删除子串的问题
- 关于OLE拖放:自定义Listbox中的条目既有文件信息也有自定义数据格式,begindrag事件的时候如何判断某个条目应添加到CF_HDROP格式(如果
- 一个运行时的错误,送分求助
然后在DrawItem(...)中绘图。void CThumbnailButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
......
}没问题的!^o^
{
CDC buttomDC;
CBitmap bitmapTrans;
BITMAP bmp;
CDC mem;
CRect rc;
buttomDC.Attach(lpDrawItemStruct->hDC);
mem.CreateCompatibleDC(&buttomDC);
rc=lpDrawItemStruct->rcItem;
UINT state = lpDrawItemStruct->itemState;
if(state & ODS_FOCUS)
{
bitmapTrans.LoadBitmap(IDB_BTN_DOWN);
bitmapTrans.GetBitmap(&bmp);
CBitmap* old=mem.SelectObject(&bitmapTrans);
buttomDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
mem.SelectObject(old);
bitmapTrans.DeleteObject();
buttomDC.SetBkMode(TRANSPARENT);
if(nIDCtl == IDC_ODBC_SQL_SAVE){
buttomDC.DrawText("保存",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
else
buttomDC.DrawText("保存",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
else
{
bitmapTrans.LoadBitmap(IDB_GETFOCUS);
bitmapTrans.GetBitmap(&bmp);
CBitmap* old2=mem.SelectObject(&bitmapTrans);
buttomDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
mem.SelectObject(old2);
bitmapTrans.DeleteObject();
buttomDC.SetBkMode(TRANSPARENT);
if(nIDCtl == IDC_ODBC_SQL_SAVE){
buttomDC.DrawText("保存",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
else
buttomDC.DrawText("保存",&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
CFormView::OnDrawItem(nIDCtl, lpDrawItemStruct);
}