|
创建不规则窗体的几个主要函数:<br><1> CreateRectRgn : 创建矩形窗体轮廓。<br><2> CreateRoundRectRgn : 创建圆角矩形窗体轮廓。<br><3> CreateEllipticRgn : 创建圆形或椭圆形窗体轮廓。<br><4> CreatePolygonRgn : 创建多边形窗体轮廓。<br><br>上面函数在创建不规则窗体轮廓时可直接使用,无须自己指定轮廓路径。如果想让窗体更复杂,你可以使用CombineRgn把多个轮廓路径混合起来实现。上面的函数还可以用BeginPath,EndPath和PathToRegion三个函数实现,用户可以自定义窗体轮廓路径。<br><br>在头文件中加入:<br>HRGN m_wndRgn;<br><br>然后在OnInitDialog函数中加入:<br><br>CDC* pDC = GetDC();<br>CFont mFont; <br>//创建字体<br>VERIFY(mFont.CreateFont(<br> 200, // height of font<br> 50, // average character width<br> 0, // angle of escapement<br> 0, // base-line orientation angle<br> FW_HEAVY, // font weight<br> TRUE, // italic attribute option<br> FALSE, // underline attribute option<br> 0, // strikeout attribute option<br> ANSI_CHARSET, // character set identifier<br> OUT_DEFAULT_PRECIS, // output precision<br> CLIP_DEFAULT_PRECIS, // clipping precision<br> DEFAULT_QUALITY, // output quality<br> DEFAULT_PITCH | FF_SWISS, // pitch and family<br> "宋体" // typeface name<br> javascript :if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>);<br>//开始记录窗体轮廓路径<br>pDC->BeginPath(); <br>//设置背景为透明模式。<br>pDC->SetBkMode(TRANSPARENT); <br>CFont * pOldFont;<br>pOldFont = pDC->SelectObject( &mFont javascript :if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;<br>pDC->TextOut(0, 0, "吴雨"javascript :if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>; <br>pDC->SelectObject( pOldFont javascript :if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;<br>mFont.DeleteObject();<br>//结束记录窗体轮廓路径<br>pDC->EndPath();<br>//把所记录的路径转化为窗体轮廓句柄<br>m_wndRgn = : athToRegion(pDC->m_hDC);<br>//赋予窗体指定的轮廓形状<br>SetWindowRgn(m_wndRgn, TRUE); |
|