对话框是MFC中常用的窗口之一,而MFC对话框的默认的样式在很多应用中都显得很单调,如何对对话框的样式和风格进行修改是很多开发者需要面临的问题,本文从MFC的CDialog派生出自己的对话框样式,给出了很多改变对话框样式的函数,通过调用这些函数,就可以很好的改变对话框的各种风格。
主要的函数有:
//设置背景刷
void SetDlgBKBrush( CBrush* pBrush );
//设置背景颜色
void SetDlgBKColor( COLORREF clrBk );
//设置对话框字体
void SetFont( CFont* pFont );
//这只标题栏文字的位置,CAPTIONTEXT_LEFT,CAPTIONTEXT_CENTER,CAPTIONTEXT_RIGHT
void SetCaptinTextPosition(int positionType);
//设置标题文字的颜色,激活状态,非激活状态
void SetCaptionTextColor(COLORREF clrActiveCaptionText,COLORREF clrInactiveCaptionText);
//设置标题栏颜色,激活和非激活状态
void SetCaptionBarColor(COLORREF clrActiveCaptionBar,COLORREF clrInactiveCaptionBar);
//设置边框的位图,参数为各个边框图的路径
BOOL SetBorderBmp(LPCTSTR lpbmpLeft,LPCTSTR lpbmpRight,LPCTSTR lpbmpBottom)
//设置边框的位图,参数为各个边框图的句柄
BOOL SetBorderBmp(HBITMAP hbmpLeft,HBITMAP hbmpRight,HBITMAP hbmpBottom)
//设置标题栏上各个按钮的位图,给出路径
BOOL SetCaptionBtnBmp(CStringArray& strArrBtnClose,CStringArray& strArrBtnMin,CStringArray& strArrBtnMax)
//设置标题栏上各个按钮的位图,给出位图句柄指针
BOOL SetCaptionBtnBmp(HBITMAP* hbmpBtnClose,HBITMAP* hbmpBtnMin,HBITMAP* hbmpBtnMax, int nElement)
//设置标题栏的位图,给出位图句柄
BOOL SetCaptionBmp(HBITMAP hbmpACaption,HBITMAP hbmpNCaption)
//设置标题栏的位图,给出位图路径
BOOL SetCaptionBmp(LPCTSTR lpszACaption,LPCTSTR lpszNCaption)
//设置对话框的各边界的颜色
void SetBorderColor(COLORREF clrLeft,COLORREF clrTop,COLORREF clrRight, COLORREF clrBottom);
从上面可以看出,主要包括有:修改对话框的背景颜色,标题栏的颜色,标题栏的位图,标题栏字体的位置和颜色,包括激活和非激活状态,对话框边界的颜色,对话框字体等。
SetCaptionBarColor(RGB(255,0,0),RGB(0,255,255));//激活状态下标题栏颜色RGB(255,0,0)
SetCaptionTextColor(RGB(255,255,0),RGB(0,255,255));//激活状态下标题栏文本颜色RGB(255,255,0)
SetCaptinTextPosition(CAPTIONTEXT_CENTER);//标题栏文本的位置
SetDlgBKColor(RGB(255,0,255));//背景颜色RGB(255,0,255)
//边界颜色,左红色,上RGB(0,255,0),右RGB(255,255,0),底RGB(0,255,255)
SetBorderColor(RGB(255,0,0),RGB(0,255,0),RGB(255,255,0),RGB(0,255,255));