MFC编程(设置字体/不规则窗口/按位图生成不规则窗口)

本文介绍了如何在MFC中通过编程设置控件字体,以及利用位图生成不规则窗口的方法。首先,由于MFC无法直接为每个控件设置字体,需要通过代码实现。其次,通过获取窗口矩形,创建自定义RGN来构建不规则窗口,或者使用BitmapToRegion函数,根据位图和颜色掩码创建不规则形状的窗口。
摘要由CSDN通过智能技术生成

1.MFC中设置字体
  由于MFC中只能在属性里设置整个对话框的字体,而不能对某一个具体的控件设置
  所以,必须编程来实现。

    hFont = CreateFont(14,0,0,0,300,0,0,0,0,0,0,ANTIALIASED_QUALITY,0,("Microsoft Sans Serif"));
    SendMessage(GetDlgItem(hWnd,IDC_TEXT), WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);
    SendMessage(GetDlgItem(hWnd,IDC_BUTTON),
                          WM_SETFONT,
                         (WPARAM)hFont,
                         (LPARAM) TRUE);
 

2. 不规则窗口的创建方法,  按位图生成不规则窗口

    CRect rect;
    GetWindowRect(&rect);     // 获取窗口矩形框
    CRgn rgn;                 // 构造自己的RGN
    rgn.CreateRoundRectRgn(0,0,rect.Width(),rect.Height(), 5,5);
    this->SetWindowRgn((HRGN) rgn.GetSafeHandle(),true);

    RGN可以自由构造,最后你要做的只是调用SetWindowRgn这个函数来设置窗口的范围;

    你还可以使用一幅位图来作为生成这个窗口RGN的依据 . 这里提供一个函数, 来自CODEPROJECT. 它有3个参数  第一个hBmp是位图的句柄, 第二个是掩码色, 第三个表示掩码色上下可浮动的范围(这个范围内都不创建RGN)     ;   不过要提醒的是, 这个函数在使用时RGB颜色是相反的(比如RGB(255,0,0)应该表示的是红色, 使用该函数十却是将蓝色区域排除), 所以最好是使用RGB(255,0,255)作为掩码色, 那么就无所谓了.

    你可以在PreSubClassWindow函数里调用这个函数, 并调用如下函数实现不规则的窗口, 至于下一步要不要贴图
就看你自己了,  反正窗口是生成了;
         SetWindowRgn(rgn, TRUE ); 
         ModifyStyle(0,   BS_OWNERDRAW);

   //
// BitmapToRegion : Create a region from the "non-transparent" pixels o

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值