WEB开发网
开发学院软件开发VC 让VC窗口轻而易举变漂亮 阅读

让VC窗口轻而易举变漂亮

 2007-10-05 20:22:46 来源:WEB开发网   
核心提示:前段时间一直在想怎么样能让窗口变得更漂亮一点,更加吸引人呢?在网上也看到了不少高手们的做法,让VC窗口轻而易举变漂亮,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,GetSystemMetrics函数来得到各个边框的长度或宽度,如果大家觉得这样比较容易的话,那我也就满意了,,

前段时间一直在想怎么样能让窗口变得更漂亮一点,更加吸引人呢?在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,GetSystemMetrics函数来得到各个边框的长度或宽度。。。。没几下,我的头就晕了,在查了许多资料以及实验后,我终于找到了一种比较简单的美化窗口的方法,现在就拿出来献丑一下,觉得不好的就请跳过去吧~~

大家请看这张图:

其实这张图已经很直观的表达了窗口内部的布局,有了这张图你觉得美化窗口还难吗?想怎么好看就可以怎么好看….<注:这张图是从网上搜索得来,十分感谢此作者,为我们提供了方便,在这里我只是拿这张图做一下参考>

//取得标题栏的位置
rtTitle.left = 6;
rtTitle.top = 0;
rtTitle.right = rtWnd.right - rtWnd.left - 6;
rtTitle.bottom = 30;
//计算最小化按钮的位置
m_rtButtMin.left = rtWnd.right - rtWnd.left - 66;
m_rtButtMin.top= 0;
m_rtButtMin.right = rtWnd.right - rtWnd.left - 46;
m_rtButtMin.bottom = 30;
    
//计算最大化按钮的位置
m_rtButtMax.left = rtWnd.right - rtWnd.left - 46;
m_rtButtMax.top = 0;
m_rtButtMax.right = rtWnd.right - rtWnd.left - 26;
m_rtButtMax.bottom = 30;
//计算关闭按钮的位置
m_rtButtExit.left = rtWnd.right - rtWnd.left - 26;
m_rtButtExit.top = 0;
m_rtButtExit.right = rtWnd.right - rtWnd.left-6;
m_rtButtExit.bottom = 30;
有了它们的位置美化它们就容易了://准备画图
     CBitmap* pBitmap = new CBitmap;
     BITMAP BmpInfo;
     CBitmap* pOldBitmap;
     CDC* pDisplayMemDC=new CDC;
     pDisplayMemDC->CreateCompatibleDC(pDC);
    
     //重画标题栏
     pBitmap->LoadBitmap(IDB_TITLE_TOP);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     pDC->StretchBlt(6,0, rtWnd.right-rtWnd.left-12,
       30,
       pDisplayMemDC, 0, 0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();
     //写上标题
     WriteCaption(m_CaptionColor,m_Caption);
//重画两个标题栏两边的小边框
     pBitmap->LoadBitmap(IDB_DOWN);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     //左边的
     pDC->StretchBlt(0,0,6,30,
       pDisplayMemDC,0, 0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,
       SRCCOPY);
//右边的
     pDC->StretchBlt(rtWnd.right-rtWnd.left-6,0,6,30,
       pDisplayMemDC,0,0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,
       SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();
//重画功能button
    
     pBitmap->LoadBitmap(IDB_NORMAL);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     pDC->StretchBlt(m_rtButtMin.left,
       m_rtButtMin.top+4,
       60, 21, pDisplayMemDC,
       0, 0, BmpInfo.bmWidth,
       BmpInfo.bmHeight,SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();
  这样,我们想在窗口的什么位置上贴什么我们就可以很容易的做到。如果大家觉得这样比较容易的话,那我也就满意了。如果您有什么意见或建议的话可以和我联系,我的QQ:329473663 E-mail:woshiccye@gmail.com

Tags:VC 窗口 轻而易举

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接