在VC下界面的美化比较麻烦,但方法也很多,由于投入时间不能太多,所以只能找些简单的美化方法,下面记录下自己美化程序时用到的一些方法,由于程序比较简单,高手可以略过.

    首先,我用的是MFC对话框程序,按钮肯定是美化的,网上比较出名的有CButtonST,功能比较强大,但具体的使用方法,这里就不复制粘贴了,可以去网上找。

    如果不做的非常好看,用MFC自带的CBitmapButton类就可以了,二行至三行就可以搞定,适合非常懒的,当然按钮的Owner draw要变成true

m_bttm.LoadBitmaps(IDB_1,IDB_2,IDB_3,IDB_4);
m_bttm.SubClassDlgItem(控件号,父窗口类); //感觉不加这句运行的也很好呀。(不知道有啥用,求问)
m_bttm.SizeToContent();

这样的话,一个按钮的贴图就完成了,是不是挺简单的(因为咱们要求低*_*),在LoadBitmaps函数中就可以指定鼠标按下、抬起、离开、禁用等状态的图片显示了。

第三句是控件适应图片大小。不解释了,下而来张图片吧。

wKioL1So_qrQ0rrrAADgzpP5Wyw853.jpg

由于按钮的背景色,与对话框的背景色不一样,所以看起来,特别的别扭。


下面来改变对话框的颜色,或者给对话框上图片的代码。

改变颜色:

网上有很多办法,这只是其中一个比较简单的:

1、在OnPaint里修改

2、在OnCtlColor里修改

等,应该还有的

在onPaint里添加:

CRect rect;
CPaint dc(this);
GetClientRect(&rect);
dc.FillSoliRect(rect,RGB(255,255,0));


这是改变背景颜色。

下面是贴背景图:

this->Invalidate();
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateComPatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(BMP图片资源号);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
HBITMAP* pOldbmp = (HBITMAP*)dcMem.SelectObject(bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

OK,图片贴完了。


下面说***意,要想把界面做的好看,还是需要美工的,不是随便在网上找几个图贴上就OK了,当然大牛会自己画的除外,图片上了后,你需要按钮的颜色与对话框背景的颜色一致,不然,就像我上面那张图,一下看出倪端了。把上面背景色修改后,效果如下:

wKioL1SpSdbBBJQPAABlcVHsGm0279.jpg

这时候位图按钮的图片看起来就自然多了,但由于这个圆型按钮旁边的颜色与对话框背景的颜色还不是很相近,所以还是可以看得出来白色的部分,这时候就需要美工来修改了,如果自己会PS的话,也可以修改下,好了,很简单的说了下原理,设计部分还是交给大家去构思。

其它控件,也可以通过CTLCOLOR消息去过滤,然后进行改变,支持的各类有:

CTLCOLOR_DLG   对话框 
CTLCOLOR_EDIT   编辑框 
CTLCOLOR_LISTBOX   列表框   
CTLCOLOR_MSGBOX   消息框 
CTLCOLOR_SCROLLBAR   滑动条 
CTLCOLOR_STATIC   静态文本框、矩形等。

注意:一些重载函数也会引起背景颜色与图片的不正常显示,如WM_DRAWITEM.