Codejock Xtreme ToolkitPro MFC 使用

下载地址:
Codejock Xtreme ToolkitPro MFC 15.1.3.0908    http://download.csdn.net/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(“Office2007.cjstyles”));//这句是设置一种风格,Office2007.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(“Office2007.cjstyles”));


3. 动态创建的控件或者是没有自动使用皮肤的控件使用下面语句强制使用皮肤
    XTPSkinManager()->ApplyWindow(myCtrl->m_hWnd);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值