失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [转载]Codejock Xtreme ToolkitPro MFC 使用

[转载]Codejock Xtreme ToolkitPro MFC 使用

时间:2022-11-01 10:34:30

相关推荐

[转载]Codejock Xtreme ToolkitPro MFC 使用

下载地址: Codejock Xtreme ToolkitPro MFC 15.1.3.0908 /source/3773927

1,确定你已经装好了XTP。

2,修改目录:工具/选项/目录 include files : D:\Microsoft Visual Studio\Xtreme ToolkitPro v11.2.2\Source librarys files : D:\Microsoft Visual Studio\Xtreme ToolkitPro v11.2.2\Lib\vc60 3,工程/设置/C++ 在工程选项里面添加:/Zm200 注意大小写。

4,在stdAfx.h里面添加:#include <XTToolkitPro.h>

5,在Dialog.h文件中,Dialog定义的地方改为: #define CDialogSampleDlgBase CXTPDialogBase<CXTResizeDialog> class CCardManageDlg : public CDialogSampleDlgBase{ public: 。。。 }

6,在Dialog构造函数实现的地方改为: CCardManageDlg::CCardManageDlg(CWnd* pParent /*=NULL*/) : CDialogSampleDlgBase(CCardManageDlg::IDD, pParent) {。。。 }

7,dialog构造函数实现内,预先配置: XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);//这句必须有, XTPSkinManager()->LoadSkin(_T("Office.cjstyles"));//这句是设置一种风格,Office.cjstyles是风格文件名,要拷贝过来。

8,增加变量: BOOL m_bInRepositionControls, m_bInitDone; CRect m_rcBorders; 用于第9,10步中,重新设置组件位置和大小。

9,在initdialog里面添加:

VERIFY(InitCommandBars());//XTP带,预处理,不可少。

CXTPCommandBars* pCommandBars = GetCommandBars();//CXTPCommandBars管理TOOLBAR,Menu和status. /***开始添加菜单***/ pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU1); CXTPToolBar* pToolBar = pCommandBars->Add(_T("Standard"), xtpBarTop); pToolBar->LoadToolBar(IDR_MAINFRAME);

XTPImageManager()->SetIcons(IDR_MAINFRAME);//图标

pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);//额外的。 pCommandBars->GetToolTipContext()->SetStyle(xtpToolTipOffice);//额外的。 // pCommandBars->GetShortcutManager()->SetAccelerators(IDR_ACCELERATOR);//快捷键

LoadCommandBars(_T("CommandBars"));//XTP必须

/****下面是为解决MENU和TOOLBAR引起的错位,通过迭代对所有子组件重拍******/ CWnd* pwndChild = GetWindow(GW_CHILD); while (pwndChild) { SetResize(pwndChild->GetDlgCtrlID(), SZ_TOP_LEFT, CXTResizePoint( 0, 0) ); //0,0表示水平和竖直方向都不缩放。 pwndChild = pwndChild->GetNextWindow(); }

m_bInitDone = TRUE; RepositionControls();//重设组件位置和大小,实现见10.

m_szMin = m_szWindow; AutoLoadPlacement(_T("Placement"));

10,实现RepositionControls();//重设组件位置和大小,无需看,直接复制。 void CCardManageDlg::RepositionControls() { if (m_bInRepositionControls || !m_bInitDone) return;

CRect rcClientStart; CRect rcClientNow; GetClientRect(rcClientStart);

if ((GetStyle() & WS_MINIMIZE) || (rcClientStart.IsRectEmpty())) return;

m_bInRepositionControls = TRUE; RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow); CRect rcBorders(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top, rcClientStart.right - rcClientNow.right, rcClientStart.bottom - rcClientNow.bottom);

if (rcBorders != m_rcBorders) { CPoint ptOffset(rcBorders.left - m_rcBorders.left, rcBorders.top - m_rcBorders.top); CSize szOffset(rcBorders.left + rcBorders.right - m_rcBorders.left - m_rcBorders.right, rcBorders.top + rcBorders.bottom - m_rcBorders.top - m_rcBorders.bottom); CRect rcWindow; GetWindowRect(rcWindow); rcWindow.BottomRight() += szOffset; Offset(ptOffset); m_szWindow += szOffset; m_szMin += szOffset; MoveWindow(rcWindow, TRUE); }

m_rcBorders = rcBorders; RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); m_bInRepositionControls = FALSE; }

11,添加状态栏的方法: 状态栏变量:CXTPStatusBar m_wndStatusBar; 在ONinitdialog里面加: if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create }

m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100); 在合适的地方调用m_wndStatusBar.SetWindowText(lpsz);即可设置显示文本

/***下面这句有时间看看**/ LRESULT CDialogSampleDlg::OnKickIdle(WPARAM, LPARAM) { if (GetCommandBars()) GetCommandBars()->UpdateCommandBars(); if (m_wndStatusBar.GetSafeHwnd()) m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE); return 0; }

最小使用方法: 1. 在stdafx.h文件中加入:

#include <XTToolkitPro.h>

2. 在对话框构造函数中加入: XTPSkinManager()->LoadSkin(_T("Office.cjstyles"));

3. 动态创建的控件或者是没有自动使用皮肤的控件使用下面语句强制使用皮肤 XTPSkinManager()->ApplyWindow(myCtrl->m_hWnd);

如果觉得《[转载]Codejock Xtreme ToolkitPro MFC 使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。