CButtonST使用记录(mfc)

举报
Amrf 发表于 2019/07/30 20:18:52 2019/07/30
【摘要】 需求说明:收到一个改变单个checkbox控件大小的需求---老项目是mfc的---改变颜色和字体和按钮大小感觉都还行,改变checkbox的大小字体可以给放大 背景的选中和不选的图片却是没有变大------>于是使用了CButtonST这个实现有一点要说明:CButtonST的一般用法如下:m_btn.SubclassDlgItem(IDC_CHECK_xxx, this);将一个按钮子类...
  • 需求说明:

收到一个改变单个checkbox控件大小的需求---老项目是mfc的

---改变颜色和字体和按钮大小感觉都还行,改变checkbox的大小字体可以给放大 背景的选中和不选的图片却是没有变大

------>于是使用了CButtonST这个实现

  • 有一点要说明:

CButtonST的一般用法如下:

m_btn.SubclassDlgItem(IDC_CHECK_xxx, this);

将一个按钮子类化为CButtonST的实例,但是我这个项目里按钮本身已经自定义按钮类了,所以attach会报错;

说以我实际使用中的改动是让CButtonST继承于我项目中原来的按钮类,沿用原有按钮按钮的初始化部分,

然后在initDialog中

  • 设置选择和不选的图片

((CButtonST*)GetDlgItem(IDC_CHECK_xxx ))->SetIcon(IDI_ICON_UN, IDI_ICON_SE);
((CButtonST*)GetDlgItem(IDC_CHECK_xxx ))->DrawTransparent(TRUE);
((CButtonST*)GetDlgItem(IDC_CHECK_xxx))->DrawBorder(false);
  • 设置更大的字体

LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight = 200; // Request a 100-pixel-height font
   // DP and LP are always the same on CE - The conversion below is used by CFont::CreateFontIndirect
HDC hDC = ::GetDC(NULL);
lf.lfHeight = ::GetDeviceCaps(hDC, LOGPIXELSY) * lf.lfHeight;
::ReleaseDC(NULL, hDC);
lf.lfHeight /= 720; // 72 points/inch, 10 decipoints/point
if (lf.lfHeight > 0)
lf.lfHeight *= -1;
lstrcpy(lf.lfFaceName, _T("幼圆"));
HFONT font = ::CreateFontIndirect(&lf);
CWnd* myButton = GetDlgItem(IDC_CHECK_BST_CLASSD_EN); //The Button with regular font
myButton->SendMessage(WM_SETFONT, (WPARAM)font, TRUE);
  • 实际效果:

image.png===>image.png

按钮好像没有变大,这个是因为我导入的ico尺寸16*16,没找到系统默认的单选按钮资源的图片,自己截的图片ps的,但是感觉已经相对大了一些了;

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。