mfc异形窗口的创建

⌚Time: 2022-09-13 20:00:53

👨‍💻Author: Jack Ge

在OnInitDialog进行窗体形状的设置


BOOL CTestWindowDlg::OnInitDialog()

{

    CDialog::OnInitDialog();



    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

    //  执行此操作

    SetIcon(m_hIcon, TRUE);         // 设置大图标

    SetIcon(m_hIcon, FALSE);        // 设置小图标



    // TODO: 在此添加额外的初始化代码

    //取消标题栏

    SetWindowLong(this->m_hWnd, GWL_STYLE, WS_OVERLAPPED);



    //设置窗体区域

    CRgn rgn;

    CRect rect;

    GetClientRect(&rect);

    rgn. CreateEllipticRgn(0,0,rect.Width(),rect.Height());

    SetWindowRgn(rgn,TRUE);

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

由于窗体形状是椭圆形,因此点击椭圆之外的地方点不到程序

另外的区域创建函数


BOOL CRgn::CreateEllipticRgn( int x1, int y1, int x2, int y2 ); 创建圆形或椭圆形“region”。

BOOL CRgn::CreateRoundRectRgn( int x1, int y1, int x2, int y2, int x3, int y3 ); 创建圆角矩形“region”。

BOOL CRgn::CreatePolygonRgn( LPPOINT lpPoints, int nCount, int nMode ); 创建多边形“region”。

对于其它控件,如button,因为也是继承于CWnd类,属于窗口,也可以创建异形窗口,实现不同样式的按钮