« 前一篇:NETBIOS返回值及含义
后一篇:DataGrid分页与优化 »

VC中创建不规则窗体 @ 11/11/2004

技术类
创建不规则窗体的几个主要函数:
<1> CreateRectRgn : 创建矩形窗体轮廓。
<2> CreateRoundRectRgn : 创建圆角矩形窗体轮廓。
<3> CreateEllipticRgn : 创建圆形或椭圆形窗体轮廓。
<4> CreatePolygonRgn : 创建多边形窗体轮廓。

上面函数在创建不规则窗体轮廓时可直接使用,无须自己指定轮廓路径。如果想让窗体更复杂,你可以使用CombineRgn把多个轮廓路径混合起来实现。上面的函数还可以用BeginPath,EndPath和PathToRegion三个函数实现,用户可以自定义窗体轮廓路径。

在头文件中加入:
HRGN m_wndRgn;

然后在OnInitDialog函数中加入:

CDC* pDC = GetDC();
CFont mFont;   
//创建字体
VERIFY(mFont.CreateFont(
    200, // height of font
    50, // average character width
    0, // angle of escapement
    0, // base-line orientation angle
    FW_HEAVY, // font weight
    TRUE, // italic attribute option
    FALSE, // underline attribute option
    0, // strikeout attribute option
    ANSI_CHARSET, // character set identifier
    OUT_DEFAULT_PRECIS, // output precision
    CLIP_DEFAULT_PRECIS, // clipping precision
    DEFAULT_QUALITY, // output quality
    DEFAULT_PITCH | FF_SWISS, // pitch and family
    "宋体" // typeface name
    ));
//开始记录窗体轮廓路径
pDC->BeginPath();       
//设置背景为透明模式。
pDC->SetBkMode(TRANSPARENT);       
CFont * pOldFont;
pOldFont = pDC->SelectObject( &mFont );
pDC->TextOut(0, 0, "吴雨");   
pDC->SelectObject( pOldFont );
mFont.DeleteObject();
//结束记录窗体轮廓路径
pDC->EndPath();
//把所记录的路径转化为窗体轮廓句柄
m_wndRgn = ::PathToRegion(pDC->m_hDC);
//赋予窗体指定的轮廓形状
SetWindowRgn(m_wndRgn, TRUE);
发布于 11/11/2004 14:28:46 | 评论:2
Nick @ 11/11/2004 18:10:21
这里总能看到一些不错的技术文章,不论是zt还是原创,赞~~
:D
s @ 11/11/2004 23:05:11
呵呵,好~

看帖要回帖...

categories
archives
links
statistics
  • 网志数:1186
  • 评论数:2015