码迷,mamicode.com
首页 > Windows程序 > 详细

VC创建圆角窗体

时间:2014-11-19 01:34:23      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:io   使用   for   on   log   代码   ad   amp   ef   

有时候根据具体需求,我们可能要改变窗口的形状。使用API函数SetWindowRgn可以改变一个窗体的可见范围。

使用API函数CreateRoundRectRgn()函数可以创建一个圆角矩形区域。


图片ID为:IDB_BACKBMP

BOOL CDemoDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	// when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	m_back.LoadBitmap(IDB_BACKBMP);
	CRgn rgn;
	rgn.CreateRoundRectRgn(3,3,700,650,20,20);
	SetWindowRgn(rgn,TRUE);

	return TRUE;  // return TRUE  unless you set the focus to a control
}
void CDemoDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CDC picDC;
	picDC.CreateCompatibleDC (&dc);

	CBitmap *pOldBmp;
	pOldBmp = picDC.SelectObject (&m_back);
	BITMAP bm;
	m_back.GetBitmap(&bm);
	dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight,&picDC,0,0,SRCCOPY);
	dc.SelectObject(pOldBmp); 
}

void OnSize(UINT nType, int cx, int cy) 
{ 
	CDialog::OnSize(nType, cx, cy); 
	
	// TODO: 在此处添加消息处理程序代码 
	CRgn MyRgn; 
	CRect rect; 
	GetWindowRect(&rect); 
	rect -= rect.TopLeft(); 
	MyRgn.CreateRoundRectRgn(rect.left,rect.top, rect.right, rect.bottom, 3,3); 
	SetWindowRgn(MyRgn,TRUE); 
} 



VC创建圆角窗体

标签:io   使用   for   on   log   代码   ad   amp   ef   

原文地址:http://blog.csdn.net/jiangqin115/article/details/41253153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!