[MFC美化] MFC界面UI库总结

MFC(Microsoft Foundation Class)是Microsoft公司提供的一套GUI编程开发库,MFC的使用可以大大简化GUI编程的难度和复杂程度。但是MFC自带的控件样式较为单一,美观程度与时俱进的要求运用不足。于是,一些MFC程序员自发创建了很多MFC UI库,使得MFC程序的美观程度得到了极大提升。

本文将介绍几个常用的MFC UI库,并详细阐述它们的使用方法和案例,以供MFC程序员参考。

一、BCGControlBar Library:

BCGControlBar Library是一款由BCGSoft公司开发的MFC UI库,可以简单方便地为MFC程序提供美观、高效的可视化管理工具。

使用:

1.首先需要下载安装BCGControlBar Library。

2.创建MFC对话框或窗口程序(基本类型为Dialog或SDI或MDI)

3.将BCGControlBar头文件和LIB文件添加到项目中,并在stdafx.h中添加相应的头文件,最后在应用中添加初始化代码。

4.在资源编辑器中加入需要使用的BCGControlBar控件。

案例:

以下是基于BCGControlBar Library的一个简单计算器程序的代码(默认基于SDI结构):

首先需要添加 INIT_INSTANCE中代码,用来初始化BCGControlBar:

BOOL CTestApp::InitInstance()

{

// ...

InitContextMenuManager();

InitKeyboardManager();

InitTooltipManager();

// 初始化BCGControlBar

CBCGPWinApp::InitInstance ();

CBCGPToolBar::AddToolBarForImageCollection (IDR_MAINFRAME);

// ...

return TRUE;

}

在资源编辑器中加入需要使用的控件(例如Button),参考下面的代码定义持有对话框的对话框类(这里重载了WM_PAINT消息,使程序的主框框具有圆角):

class CalculatorDlg : public CBCGPDialog

{

public:

CalculatorDlg(CWnd* pParent = NULL)

: CBCGPDialog(IDD_CALCULATOR, pParent)

{

}

protected:

virtual LRESULT OnPaint(WPARAM wp, LPARAM lp)

{

CPaintDC dc(this);

CRect rect;

GetClientRect (&rect);

CRgn rgn1;

CRgn rgn2;

CRgn rgn3;

rgn1.CreateRectRgn (rect.left, rect.top + 6, rect.right, rect .bottom);

rgn2.CreateRectRgn (rect.left + 6, rect.top, rect.right - 6, rect.bottom - 6);

rgn3.CreateRoundRectRgn (rect.left, rect.top, rect.right, rect .bottom - 6, 12, 12);

CRgn rgn;

rgn.CreateRectRgn(0, 0, 0, 0);

rgn.CombineRgn (&rgn1, &rgn2, RGN_OR);

rgn.OffsetRgn (0, -1);

rgn.CombineRgn (&rgn, &rgn3, RGN_OR);

CBrush br (RGB (38, 38, 38));

dc.FillRgn(&rgn, &br);

return 0L;

}

// ...

};

最后,在对话框初始化部分中,使用以下代码来初始化Button:

BOOL CalculatorDlg::OnInitDialog()

{

CBCGPDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE);

SetIcon(m_hIcon, FALSE);

CBCGPButton& btn = ((CBCGPButton*) GetDlgItem(IDC_CALCBUTTON));

btn.SetImage(IDB_BUTTON);

btn.SetMouseCursorHand();

btn.SetTooltip(_T(“Calculator”));

btn.SizeToContent();

return TRUE;

}

注:IDB_BUTTON是一个包含按钮图像的图片,可以使用任何绘图工具创建。

二、Control Toolkit Library:

Control Toolkit Library是一套基于MFC的现代、易于使用的UI库,具有各种控件、图形和其他鼓励创新的特性。

使用:

1.下载并安装 Control Toolkit Library。

2.创建一个新的MFC应用程序(基本类型为SDI,请使用默认设置)。

3.将Control Toolkit库文件复制到MFC应用程序的目录下,并在资源编辑器中添加需要使用的控件。

4.在应用程序中添加以下代码来初始化Control Toolkit:

BOOL CGUIApp::InitInstance()

{

InitCommonControls();

// ...

InitGui();

InitGuiResource();

InitLookAndFeel();

InitLookSkin();

InitColor();

InitDraw();

InitCxImage();

return TRUE;

}

5.在需要使用的控件中添加初始化代码,如下所示:

BOOL CSplashScreenDlg::OnInitDialog()

{

PremultipliedAlphaHelper().EnablePerPixelAlpha (GetSafeHwnd());

SetBitmap (IDB_SPLASH);

CPopupDlg::OnInitDialog ();

return TRUE;

}

案例:

以下是基于Control Toolkit Library的一个简单的画图程序的代码(默认基于SDI结构)。此程序允许用户从一个列表中选择一种颜色,并在画布上绘制自由线条:

void CMyPaintView::OnLButtonDown(UINT nFlags, CPoint point)

{

if(GetCapture() == NULL)

SetCapture();

if(m_bMouseDown)

return;

m_bMouseDown = true;

m_lastPoint = point;

m_currentPoint = point;

UpdateLine(m_lastPoint, m_currentPoint);

CView::OnLButtonDown(nFlags, point);

}

void CMyPaintView::OnLButtonUp(UINT nFlags, CPoint point)

{

if(GetCapture() == this)

ReleaseCapture();

if(!m_bMouseDown)

return;

m_bMouseDown = false;

m_currentPoint = point;

UpdateLine(m_lastPoint, m_currentPoint);

CView::OnLButtonUp(nFlags, point);

}

void CMyPaintView::OnMouseMove(UINT nFlags, CPoint point)

{

if(!m_bMouseDown ||m_crsSelect.rgbReserved != 0)

return;

m_currentPoint = point;

UpdateLine(m_lastPoint, m_currentPoint);

CView::OnMouseMove(nFlags, point);

}

// 更新线条

void CMyPaintView::UpdateLine(CPoint ptFrom, CPoint ptTo)

{

m_memDC.BitBlt (0, 0, m_sizeCXImage.cx, m_sizeCXImage.cy, m_dcPaint, 0, 0, SRCCOPY);

// 选择一个颜色,绘制线条

switch(m_iIndexColor)

{

case 1:

m_memDC.CreatePen(PS_SOLID, 10, RGB(255,0,0));

break;

case 2:

m_memDC.CreatePen(PS_SOLID, 10, RGB (0,255,0));

break;

case 3:

m_memDC.CreatePen(PS_SOLID, 10, RGB (0,0,255));

break;

case 4:

m_memDC.CreatePen(PS_SOLID, 10, RGB (0,255,255));

break;

defulat:

m_memDC.CreatePen(PS_SOLID, 10, RGB (255,255,255));

}

// 绘制线条

m_memDC.MoveTo(ptFrom);

m_memDC.LineTo(ptTo);

Invalidate(FALSE);

}

三、Codejock Toolkit Pro:

Codejock Toolkit Pro是一套高度可定制的MFC UI库,其中包含了许多强大的GUI控件。该库的界面视觉效果美观,使用方便,功能强大。

使用:

1.下载并安装Codejock Toolkit Pro。

2.创建一个新的MFC应用程序(基本类型为SDI,如果要将窗口嵌入MFC对话框中,则为Control Container),然后将Codejock库文件添加到项目中。

3.在应用程序中添加以下代码来初始化Codejock界面控件:

BOOL CMyApp::InitInstance()

{

// ...

CXTPImageManager::InitLibrary();

CXTPWinDwmWrapper().SetProcessDPIAware();

return TRUE;

}

4.在资源编辑器中添加任何需要的Codejock库控件,并使用相应的代码为它们提供动作和行为。

案例:

以下是基于Control Toolkit Library的一个简单的GUI界面(基于SDI或对话框结构):

首先,在对话框类中添加以下初始化相关成员变量:

private:

CXTPButton m_btnOK;

CXTPButton m_btnCancel;

void CMyDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDOK, m_btnOK);

DDX_Control(pDX, IDCANCEL, m_btnCancel);

}

BOOL CMyDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// ...

CXTPPaintManager* pManager = new CXTPPaintManager();

pManager->SetTheme(xtpThemeOffice2016, xtpPaintManagerStyleOffice2016Colorful, xtpPaintManagerDefault);

m_btnOK.SetTheme(xtpButtonThemeOffice2016);

m_btnOK.SetPushButtonStyle(xtpButtonNormal);

m_btnOK.SetWindowText(_T("OK"));

m_btnOK.ShowShadow(TRUE);

m_btnOK.EnableWindow(TRUE);

m_btnOK.SetAlignment(TA_CENTER);

m_btnOK.SetHeight(31);

m_btnOK.SetWidth(100);

m_btnOK.SetPaintManager(pManager);

m_btnCancel.SetTheme(xtpButtonThemeOffice2016);

m_btnCancel.SetPushButtonStyle(xtpButtonNormal);

m_btnCancel.SetWindowText(_T("Cancel"));

m_btnCancel.ShowShadow(TRUE);

m_btnCancel.EnableWindow(TRUE);

m_btnCancel.SetAlignment(TA_CENTER);

m_btnCancel.SetHeight(31);

m_btnCancel.SetWidth(100);

m_btnCancel.SetPaintManager(pManager);

// ...

return TRUE;

}

接下来,可以在对话框类中添加处理按钮事件的代码:

void CMyDlg::OnOK()

{

// 你的代码 …

CDialog::OnOK();

}

四、其他MFC UI库:

除了上述介绍的库外,还有许多其他的MFC UI库可供使用。以下为一些常用的MFC UI库:

1. SkinCrafter Library: 一组可定制的MFC皮肤控件,可用于创建现代GUI界面。

2. Ultimate Toolbox:一套高度可定制并具有良好文档的GUI控件库。

3. Xtreme Toolkit Pro:一组具有动画效果的Windows控件。

4. Microsoft Foundation Class Library:MFC内置的控件库,用于创建Windows应用程序的GUI。

总结:

本文为MFC UI库的介绍和使用方法做了一些简单的介绍。不同的UI库有不同的特点和使用方式,具体的选择应该基于实际情况和需求。MFC UI库的使用可以大大提高MFC程序的美观性和可读性。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(101) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部