zoukankan      html  css  js  c++  java
  • Win32 窗口篇(3)

    1.11 如何显示或隐藏窗口的标题栏

    使用ModifyStyle方法改变参数来更改窗体样式

    void CDemoDlg::OnTest1() 
    {
        //删除标题栏风格
        ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED);
    }
    
    void CDemoDlg::OnTest2() 
    {
        //添加标题栏风格
        ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED);    
    }
    

    1.12 如何改变窗口的形状

    1. 用CRgn相关Create方法创建区域形状
    2. 使用SetWindowRgn方法设置窗体区域
    void CDemoDlg::OnTest1() 
    {
        CRect rect;
        GetClientRect(rect);
    
        //创建矩形区域
        CRgn rgn;
        rgn.CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);
    
        //设置窗口的区域
        SetWindowRgn((HRGN)rgn, TRUE);
    }
    

    效果:

    image

    1.13 如何设置窗口的透明区域

    将2个区域合并成一个区域,貌似没啥用

    CRect rect1;
    GetWindowRect(rect1);
    
    CRect rect2;
    GetClientRect(rect2);
    ClientToScreen(rect2);
    
    CRgn rgn1;
    rgn1.CreateRectRgn(rect1.left, rect1.top, rect1.right, rect1.bottom);
    
    CRgn rgn2;    
    rgn2.CreateRectRgn(rect2.left, rect2.top, rect2.right, rect2.bottom);
    
    CRgn rgn;
    rgn.CreateRectRgn(0, 0, 1, 1);
    
    rgn.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
    
    //设置窗口区域
    SetWindowRgn((HRGN)rgn2,TRUE);
    

    1.14 如何实现透明窗口

    先修改窗体样式,然后调用SetLayeredWindowAttributes方法更改透明度

    //添加WS_EX_LAYERED(0x80000)扩展风格
    ModifyStyleEx(0, 0x80000);
    ::SetLayeredWindowAttributes(GetSafeHwnd(), 0, 128, 2);
    

    The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.

    效果:

    image

    1.15 如何使窗口闪烁

    调用FlashWindow方法,参数True则窗体闪烁一次,False则停止闪烁

    void CDemoDlg::OnTest1() 
    {
        //设置定时器
        SetTimer(1, 1000, NULL);
    }
    
    void CDemoDlg::OnTest2() 
    {
        //关闭定时器
        KillTimer(1);
    
        //窗口返回原始状态
        FlashWindow(FALSE);
    }
    
    void CDemoDlg::OnTimer(UINT nIDEvent) 
    {
        if (nIDEvent == 1)
        {
            //窗口从一种状态闪烁到另一种状态
            FlashWindow(TRUE);
        }
    
        CDialog::OnTimer(nIDEvent);
    }
    
  • 相关阅读:
    Python脚本模拟登陆DVWA
    PHP单元测试使用
    PHPUnit实践一(初识)
    composer引用本地git做为源库
    编写自己的composer项目
    Laravel 核心--Facades 门面
    Laravel5 创建自定义门面(Facade)
    简单理解laravel框架中的服务容器,服务提供者以及怎样调用服务
    Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
    cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1989324.html
Copyright © 2011-2022 走看看