• 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);
    }
    
  • 相关阅读:
    2981 大整数加法
    1160 矩阵的最大值(指针专题)
    1159 最大的两个数(指针专题)
    1127 矩阵乘积
    1126 布尔矩阵的奇偶性
    1125 上三角矩阵的判断
    1124 两个有序数组合并
    1123 最佳校友
    1122 小明的调查作业
    1121 电梯
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1989324.html
Copyright © 2020-2023  润新知