VC---创建一个不规则形状的窗口
来源:互联网 发布:听歌识谱软件 编辑:程序博客网 时间:2024/05/04 02:14
可以使用MFC 函数cWnd::SetWindowRgn。该函数将绘画和鼠标消息限定在窗口的一个指定
的区域,实际上使窗口成为指定的不规则形状。
使用AppWizard创建一个基于对的应用程序并使用资源编辑器从主对话资源中删
除所在的缺省控件、标题以及边界。给对话类增加一个CRgn 数据成员,以后要使用该
数据成员建立窗口区域。
BOOL CTest2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//Get size of dialog .
CRect rcDialog ;
GetClientRect (rcDialog);
// Create region and assign to window .
m_rgn.CreateEllipticRgn (0,0 , rcDialog.Width() , rcDialog .Height());
//::SetWindowRgn(GetSafeHwnd(),(HRGN)m_rgn,TRUE);
SetWindowRgn((HRGN)m_rgn,TRUE);
return TRUE; // return TRUE unless you set the focus to a control
}
void CTest2Dlg::OnPaint()
{
CPaintDC dc (this) ; // device context for painting .
//draw ellipse with out any border
dc.SelectStockObject(NULL_PEN);
//get the RGB colour components of the sphere color
//COLORREF color= RGB( 0 , 0 , 255);
COLORREF color= RGB( 255 , 255, 255);
BYTE byRed =GetRValue (color);
BYTE byGreen = GetGValue (color);
BYTE byBlue = GetBValue (color);
// get the size of the view window
CRect rect ;
GetClientRect (rect);
// get minimun number of units
int nUnits =min (rect.right , rect.bottom );
//calculate he horiaontal and vertical step size
float fltStepHorz = (float) rect.right /nUnits ;
float fltStepVert = (float) rect.bottom /nUnits ;
int nEllipse = nUnits/3; // calculate how many to draw
int nIndex ; // current ellipse that is being draw
CBrush brush ; // bursh used for ellipse fill color
CBrush *pBrushOld; // previous brush that was selected into dc
//draw ellipse , gradually moving towards upper-right corner
for (nIndex = 0 ; nIndex <= nEllipse ; nIndex ++)
{
//creat solid brush
brush.CreateSolidBrush(RGB ( ( (nIndex *byRed ) /nEllipse ) ,
( ( nIndex * byGreen ) /nEllipse ), ( (nIndex * byBlue) /nEllipse ) ) );
//select brush into dc
pBrushOld= dc.SelectObject (&brush);
//draw ellipse
dc .Ellipse ( (int) fltStepHorz * 2, (int) fltStepVert * nIndex ,
rect. right -( (int) fltStepHorz * nIndex )+ 1,
rect . bottom -( (int) fltStepVert * (nIndex *2) ) +1) ;
//delete the brush
brush.DeleteObject ( );
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
UINT CTest2Dlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
UINT nHitTest = CDialog::OnNcHitTest (point) ;
return (nHitTest == HTCLIENT)? HTCAPTION: nHitTest ;
// return CDialog::OnNcHitTest(point);
}
- VC---创建一个不规则形状的窗口
- 如何创建一个不规则形状的窗口
- 如何创建一个不规则形状的窗口收藏
- 创建不规则形状窗口
- 转帖:创建不规则形状窗口
- VC创建不规则窗口
- 在QT中如何实现一个不规则形状的窗口
- 创建不规则形状的Control
- VC创建自定义不规则窗口
- setMask()与实现不规则形状的窗口
- box2d中创建不规则的形状
- 创建“不规则形状”的Air透明窗体
- WPF创建不规则形状的按钮
- MFC实现不规则形状窗口
- 界面_制作ttplayer式的不规则形状的窗口
- 制作ttplayer式的不规则形状的窗口
- 不规则形状的剪切
- 生成不规则的形状
- excel中的if应用
- 自己用到的英文缩写
- 编写的c#读取Excel表中的內容,并把內容显示到UltraWebGrid上
- 命令行下MySQL数据库的导出和导入
- 企业网络营销发展五重境界
- VC---创建一个不规则形状的窗口
- MonoRail学习笔记系列文章
- 许可营销:网络营销的成功之路
- GNU make 学习笔记(二)、
- GNU make 学习笔记(三)
- Java 实验2
- Web 2.0中AJAX技术应用详解
- C专栏6-高级类型指针
- Java 实验3