MFC怎么实现圆形按钮

在MFC下用标准控件拖出来的Button都是矩形的,太难看了,我现在想实现的是不规则形状的Button。比如说我想实现圆形的Button,鼠标只有放到圆形区域上才有效,也... 在MFC下用标准控件拖出来的Button都是矩形的,太难看了,我现在想实现的是不规则形状的Button。
比如说我想实现圆形的Button,鼠标只有放到圆形区域上才有效,也就是才能按下Button。而不能够仅仅实现看起来是圆形的图片,但我把鼠标放到圆形图片外还能按下Button,这样的话就是一个矩形的Button用了圆形的图标作为Button的图标而已,没有达到我想要的效果。
我现在搜到的几种解决方法,一个是用别人已经写好的类库,比如说CButtonST类,但是似乎这个类只能换图标,至少我还没找到可以把Button的形状设置为圆形的方法;
另一种方法是重写CButton类的DrawItem函数,但是这个函数的结构体我不是很清楚。
总之,请提供一种可以实现我想要的效果的方法。
成功实现的话我会追加分数。万分感谢!
展开
 我来答
趣事情
推荐于2016-04-29 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
第一步:往项目中添加MyButton.h 和MyButton.cpp
两个文件。

第二步:然后将自己需要的BitMap文件导入。

第三步:在项目工程的CARMDlg::OnInitDialog()中添加如下代码:

SetIcon(m_hIcon,
TRUE);
// Set big icon

SetIcon(m_hIcon,
FALSE);
// Set small icon

m_bkg.LoadBitmap(IDB_BMP_BKG);//系统的背景颜色
m_nCollectGoods.SetBitmap(IDB_BITMAP_BUTTON,BUTTON_STATE_UP);

m_nCollectGoods.SetBitmap(IDB_BITMAP_BUTTONB,BUTTON_STATE_DOWN);

m_nCollectGoods.HideText(FALSE);

m_nCollectGoods.FontStyle(L"MS Sans Serif", 14,
8, TRUE, FALSE);

m_nCollectGoods.SetTextColor(RGB(255,0,0));

第四步:在CARMDlg::OnPaint()中添加如下代码,实现对窗口的重绘:

//CDialog::OnPaint();

CPaintDC dc(this);

CBrush brush;

brush.CreatePatternBrush(&m_bkg);

CBrush *pOld =
dc.SelectObject(&brush);

CRect rc;

GetClientRect(rc);

dc.FillRect(rc,&brush);

dc.SelectObject(pOld);

pOld->DeleteObject();

brush.DeleteObject();
bhtzu
2012-06-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4196万
展开全部
使用免费或者X解(你懂的)的界面库,如MagicSkin可以实现。
另外,圆形按钮不是很新鲜的东西了,很多开源网站都可以找到实现的源代码。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cancerDarling_
2014-08-21 · 超过36用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:78.2万
展开全部
它们被花粉染得金黄,匆匆钻出时,冷风劲吹他们的甲。
在莱茵河的微风中摇曳絮语
秋天泛黄了萧瑟拂过沧桑的回忆
我欢迎一切.忍受一切,
如果这世界完蛋??
既然水为怀云设景,怡情的中意飞扬哈哈
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2012-06-30 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1321万
展开全部
要按钮自绘才可以实现,关于按钮自绘网上有很多资料。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户549f2
2012-06-29 · TA获得超过7.3万个赞
知道大有可为答主
回答量:6.1万
采纳率:0%
帮助的人:8312万
展开全部
= = 杨彬彬~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式