VC画不规则窗体

创建不规则窗体步骤:

首先,将新创建对话框的标题栏取掉,设置属性: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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值