用MFC做VS起始页界面

好的软件有好的开始,微软VS IDE的起始界面做的实在不错,色调和布局都是很舒服,这里我动手实现了一个,下面是过程。

第一步:用spy++工具观察VS IDE开始界面构成。

通过spy++,可以看到开始页由一个大窗口,里面是位图背景,在上面有一些静态窗口,按钮等,之间夹一个小视图(例如最近的项目里面是一个listctrl)。基本就是这样,实现思路就是用位图贴在静态小窗口构成一个小的栏,中间放一个小的主视图,比如项目列表、msdn新闻等。


第二步:收集位图素材。我没有那么好的艺术细胞画这么好的小图片,所以只得偷vs的。由于使用vc6,所以下面全部基于vc6环境来说。用资源的方式打开vs ide执行文件(/Microsoft Visual Studio 8/Common7/IDE/devenv.exe),可以看到位图资源基本全是起始页的。

第三步:实现思路确定。有一些问题,里面的图片好像没有主界面那么大的位图,头部好像不是太符合尺寸:

这下我的思路是先用背景色绘制窗口,然后贴图。背景色可以用取色工具获取,我用firework里面的工具。
还有一个问题就是小栏位图的四角有颜色:

贴到主窗口上去会留下与环境不相称的一点点多余的角,这里我在网上搜到一篇mask位图的文章,基于此,把位图四角的淡白色去掉。
还有就是中间的位图太小:

我准备采取重复绘制来填满一定长度,注意水平方向和垂直方向稍有不同,所以实现的时候要进行判断。
这样基本敲打实现方法,接着就动手实现。

第四步:开工。vc6建立一个单文档基于formview的程序。
工序一:绘制背景
对话框的背景颜色可以通过重载OnCtlColor来实现,而不是OnEraseBackground。
HBRUSH CVS2005StartView::OnCtlColor(CDC *  pDC, CWnd *  pWnd, UINT nCtlColor) 
{
    HBRUSH hbr 
= CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    
    
// TODO: Change any attributes of the DC here
    if(nCtlColor == CTLCOLOR_DLG)
    
{
        
return m_bkBrush;
    }

    
// TODO: Return a different brush if the default is not desired
    return hbr;
}
上面只修改对话框背景,所以进行了判断,m_bkBrush就是背景画刷。

工序二:贴图,在OnPaint里面绘制Visual studio的大位图。
void  CVS2005StartView::OnPaint() 
{
    CPaintDC dc(
this); // device context for painting
    
    
// TODO: Add your message handler code here
    CDC            memDC;
    HBITMAP        hOldBmp        
= NULL;
    BITMAP        bmp;
    memDC.CreateCompatibleDC(
&dc);
    hOldBmp 
= (HBITMAP)memDC.SelectObject(&m_bmpHeader);
    m_bmpHeader.GetBitmap(
&bmp);
    BitBlt(dc, 
00, bmp.bmWidth, bmp.bmHeight, memDC, 00, SRCCOPY);
    memDC.SelectObject(hOldBmp);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值