根据路径创建不规则窗体

前言:我们的用默认生成的窗口尺寸大小都是矩形的,为了具有个性,可以自己来设置窗口的形状大小.

如下方法可以解决这个问题:

在窗体创建之前调用

CDC* pDC; pDC = this->GetDC();

::BeginPath(pDC->m_hDC); //设置为透明模式 

::SetBkMode(pDC->m_hDC, TRANSPARENT);  

RECT rect;

this->GetClientRect(&rect); 

pDC->MoveTo(rect.left, rect.top);

pDC->LineTo(rect.right, rect.top);

pDC->LineTo(rect.right, rect.bottom - 20);

pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom - 20);

pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom);

pDC->LineTo(rect.left + (rect.right - rect.left) / 2 - 20, rect.bottom - 20);

pDC->LineTo(rect.left, rect.bottom - 20);

pDC->LineTo(rect.left, rect.top);

HRGN hRgn;

::EndPath(pDC->m_hDC);

hRgn = ::PathToRegion(pDC->m_hDC);

this->SetWindowRgn(hRgn, TRUE)

 

完了,最主要的几个API函数BeginPath EndPath PathToRegion SetWindowRgn的使用方法可以通过MSDN来获取.希望这小段代码能对你有所帮助!

你可能感兴趣的:(api)