创建不规则窗体步骤:
首先,将新创建对话框的标题栏取掉,设置属性:border为none;
头文件:
设置宏:
#define GLOBAL_OVERLEN 20 //用来调整不规定图形的长度
#define GLOBAL_OVERWIDTH 30 //用来调整不规定图形的宽度
全局变量: HRGN hRgn;
源文件:
初始化:
BOOL CtestdDlg::OnInitDialog()
{
//根据路径创建不规则窗体
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 - GLOBAL_OVERLEN);
pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom - GLOBAL_OVERLEN);
pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom);
pDC->LineTo(rect.left + (rect.right - rect.left) / 2 - GLOBAL_OVERWIDTH, rect.bottom - GLOBAL_OVERLEN);
pDC->LineTo(rect.left, rect.bottom - GLOBAL_OVERLEN);
pDC->LineTo(rect.left, rect.top);
//
::EndPath(pDC->m_hDC);
hRgn = ::PathToRegion(pDC->m_hDC);
this->SetWindowRgn(hRgn, TRUE);
}
//鼠标移动窗体
LRESULT CtestdDlg::OnNcHitTest(CPoint point)
{
UINT uRet = CDialog::OnNcHitTest(point);
uRet = (uRet==HTCLIENT)?HTCAPTION:uRet;
return uRet;
//return CDialog::OnNcHitTest(point);
}
HBRUSH CtestdDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(168, 255, 255));
return hbr;
}