如何学习codejock toolkitpro
1个回答
推荐于2016-12-01
展开全部
1,确定你已经装好了XTP。
2,修改目录:工具/选项/目录
1
include files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Source
2
librarys files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Libvc60
3,工程/设置/C++ 在工程选项里面添加:/Zm200 注意大小写。
4,在stdAfx.h里面添加:#include <XTToolkitPro.h>
5,在Dialog.h文件中,Dialog定义的地方改为:
1
#define CDialogSampleDlgBase CXTPDialogBase<CXTResizeDialog>
2
class CCardManageDlg : public CDialogSampleDlgBase{
3
public:
4
。。。
5
}
6,在Dialog构造函数实现的地方改为:
1
CCardManageDlg::CCardManageDlg(CWnd* pParent /*=NULL*/)
2
: CDialogSampleDlgBase(CCardManageDlg::IDD, pParent)
3
{。。。
4
}
7,dialog构造函数实现内,预先配置:
1
XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);//这句必须有,
2
XTPSkinManager()->LoadSkin(_T("Office2007.cjstyles"));//这句是设置一种风格,Office2007.cjstyles是风格文件名,要拷贝过来。
8,增加变量:
1
BOOL m_bInRepositionControls, m_bInitDone;
2
CRect m_rcBorders;
用于第9,10步中,重新设置组件位置和大小。
9,在initdialog里面添加:
1
VERIFY(InitCommandBars());//XTP带,预处理,不可少。
CXTPCommandBars* pCommandBars = GetCommandBars();//CXTPCommandBars管理TOOLBAR,Menu和status.
/***开始添加菜单***/
01
pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU1);
02
CXTPToolBar* pToolBar = pCommandBars->Add(_T("Standard"), xtpBarTop);
03
pToolBar->LoadToolBar(IDR_MAINFRAME);
04
05
06
XTPImageManager()->SetIcons(IDR_MAINFRAME);//图标
07
08
09
pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);//额外的。
10
pCommandBars->GetToolTipContext()->SetStyle(xtpToolTipOffice);//额外的。
11
// pCommandBars->GetShortcutManager()->SetAccelerators(IDR_ACCELERATOR);//快捷键
12
13
14
LoadCommandBars(_T("CommandBars"));//XTP必须
/****下面是为解决MENU和TOOLBAR引起的错位,通过迭代对所有子组件重拍******/
01
CWnd* pwndChild = GetWindow(GW_CHILD);
02
while (pwndChild)
03
{
04
SetResize(pwndChild->GetDlgCtrlID(), SZ_TOP_LEFT, CXTResizePoint( 0, 0) );
05
//0,0表示水平和竖直方向都不缩放。
06
pwndChild = pwndChild->GetNextWindow();
07
}
08
09
10
m_bInitDone = TRUE;
11
RepositionControls();//重设组件位置和大小,实现见10.
12
13
14
m_szMin = m_szWindow;
15
AutoLoadPlacement(_T("Placement"));
10,实现RepositionControls();//重设组件位置和大小,无需看,直接复制。
01
void CCardManageDlg::RepositionControls()
02
{
03
if (m_bInRepositionControls || !m_bInitDone)
04
return;
05
06
07
CRect rcClientStart;
08
CRect rcClientNow;
09
GetClientRect(rcClientStart);
10
11
12
if ((GetStyle() & WS_MINIMIZE) || (rcClientStart.IsRectEmpty()))
13
return;
14
15
16
m_bInRepositionControls = TRUE;
17
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);
18
CRect rcBorders(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top, rcClientStart.right - rcClientNow.right, rcClientStart.bottom - rcClientNow.bottom);
19
20
21
if (rcBorders != m_rcBorders)
22
{
23
CPoint ptOffset(rcBorders.left - m_rcBorders.left, rcBorders.top - m_rcBorders.top);
24
CSize szOffset(rcBorders.left + rcBorders.right - m_rcBorders.left - m_rcBorders.right,
25
rcBorders.top + rcBorders.bottom - m_rcBorders.top - m_rcBorders.bottom);
26
27
CRect rcWindow;
28
GetWindowRect(rcWindow);
29
rcWindow.BottomRight() += szOffset;
30
31
Offset(ptOffset);
32
m_szWindow += szOffset;
33
m_szMin += szOffset;
34
35
MoveWindow(rcWindow, TRUE);
36
}
37
38
39
m_rcBorders = rcBorders;
40
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
41
m_bInRepositionControls = FALSE;
42
}
11,添加状态栏的方法:
状态栏变量:CXTPStatusBar m_wndStatusBar;
在ONinitdialog里面加:
1
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
2
{
3
TRACE0("Failed to create status barn");
4
return -1; // fail to create
5
}
6
7
8
m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100);
在合适的地方调用m_wndStatusBar.SetWindowText(lpsz);即可设置显示文本
/***下面这句有时间看看**/
1
LRESULT CDialogSampleDlg::OnKickIdle(WPARAM, LPARAM)
2
{
3
if (GetCommandBars())
4
GetCommandBars()->UpdateCommandBars();
5
if (m_wndStatusBar.GetSafeHwnd())
6
m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);
7
return 0;
8
}
最小使用方法:
1. 在stdafx.h文件中加入:
1
#include <XTToolkitPro.h>
2. 在对话框构造函数中加入:
1
XTPSkinManager()->LoadSkin(_T("Office2007.cjstyles"));
3. 动态创建的控件或者是没有自动使用皮肤的控件使用下面语句强制使用皮肤
1
XTPSkinManager()->ApplyWindow(myCtrl->m_hWnd);
2,修改目录:工具/选项/目录
1
include files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Source
2
librarys files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Libvc60
3,工程/设置/C++ 在工程选项里面添加:/Zm200 注意大小写。
4,在stdAfx.h里面添加:#include <XTToolkitPro.h>
5,在Dialog.h文件中,Dialog定义的地方改为:
1
#define CDialogSampleDlgBase CXTPDialogBase<CXTResizeDialog>
2
class CCardManageDlg : public CDialogSampleDlgBase{
3
public:
4
。。。
5
}
6,在Dialog构造函数实现的地方改为:
1
CCardManageDlg::CCardManageDlg(CWnd* pParent /*=NULL*/)
2
: CDialogSampleDlgBase(CCardManageDlg::IDD, pParent)
3
{。。。
4
}
7,dialog构造函数实现内,预先配置:
1
XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);//这句必须有,
2
XTPSkinManager()->LoadSkin(_T("Office2007.cjstyles"));//这句是设置一种风格,Office2007.cjstyles是风格文件名,要拷贝过来。
8,增加变量:
1
BOOL m_bInRepositionControls, m_bInitDone;
2
CRect m_rcBorders;
用于第9,10步中,重新设置组件位置和大小。
9,在initdialog里面添加:
1
VERIFY(InitCommandBars());//XTP带,预处理,不可少。
CXTPCommandBars* pCommandBars = GetCommandBars();//CXTPCommandBars管理TOOLBAR,Menu和status.
/***开始添加菜单***/
01
pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU1);
02
CXTPToolBar* pToolBar = pCommandBars->Add(_T("Standard"), xtpBarTop);
03
pToolBar->LoadToolBar(IDR_MAINFRAME);
04
05
06
XTPImageManager()->SetIcons(IDR_MAINFRAME);//图标
07
08
09
pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);//额外的。
10
pCommandBars->GetToolTipContext()->SetStyle(xtpToolTipOffice);//额外的。
11
// pCommandBars->GetShortcutManager()->SetAccelerators(IDR_ACCELERATOR);//快捷键
12
13
14
LoadCommandBars(_T("CommandBars"));//XTP必须
/****下面是为解决MENU和TOOLBAR引起的错位,通过迭代对所有子组件重拍******/
01
CWnd* pwndChild = GetWindow(GW_CHILD);
02
while (pwndChild)
03
{
04
SetResize(pwndChild->GetDlgCtrlID(), SZ_TOP_LEFT, CXTResizePoint( 0, 0) );
05
//0,0表示水平和竖直方向都不缩放。
06
pwndChild = pwndChild->GetNextWindow();
07
}
08
09
10
m_bInitDone = TRUE;
11
RepositionControls();//重设组件位置和大小,实现见10.
12
13
14
m_szMin = m_szWindow;
15
AutoLoadPlacement(_T("Placement"));
10,实现RepositionControls();//重设组件位置和大小,无需看,直接复制。
01
void CCardManageDlg::RepositionControls()
02
{
03
if (m_bInRepositionControls || !m_bInitDone)
04
return;
05
06
07
CRect rcClientStart;
08
CRect rcClientNow;
09
GetClientRect(rcClientStart);
10
11
12
if ((GetStyle() & WS_MINIMIZE) || (rcClientStart.IsRectEmpty()))
13
return;
14
15
16
m_bInRepositionControls = TRUE;
17
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);
18
CRect rcBorders(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top, rcClientStart.right - rcClientNow.right, rcClientStart.bottom - rcClientNow.bottom);
19
20
21
if (rcBorders != m_rcBorders)
22
{
23
CPoint ptOffset(rcBorders.left - m_rcBorders.left, rcBorders.top - m_rcBorders.top);
24
CSize szOffset(rcBorders.left + rcBorders.right - m_rcBorders.left - m_rcBorders.right,
25
rcBorders.top + rcBorders.bottom - m_rcBorders.top - m_rcBorders.bottom);
26
27
CRect rcWindow;
28
GetWindowRect(rcWindow);
29
rcWindow.BottomRight() += szOffset;
30
31
Offset(ptOffset);
32
m_szWindow += szOffset;
33
m_szMin += szOffset;
34
35
MoveWindow(rcWindow, TRUE);
36
}
37
38
39
m_rcBorders = rcBorders;
40
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
41
m_bInRepositionControls = FALSE;
42
}
11,添加状态栏的方法:
状态栏变量:CXTPStatusBar m_wndStatusBar;
在ONinitdialog里面加:
1
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
2
{
3
TRACE0("Failed to create status barn");
4
return -1; // fail to create
5
}
6
7
8
m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100);
在合适的地方调用m_wndStatusBar.SetWindowText(lpsz);即可设置显示文本
/***下面这句有时间看看**/
1
LRESULT CDialogSampleDlg::OnKickIdle(WPARAM, LPARAM)
2
{
3
if (GetCommandBars())
4
GetCommandBars()->UpdateCommandBars();
5
if (m_wndStatusBar.GetSafeHwnd())
6
m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);
7
return 0;
8
}
最小使用方法:
1. 在stdafx.h文件中加入:
1
#include <XTToolkitPro.h>
2. 在对话框构造函数中加入:
1
XTPSkinManager()->LoadSkin(_T("Office2007.cjstyles"));
3. 动态创建的控件或者是没有自动使用皮肤的控件使用下面语句强制使用皮肤
1
XTPSkinManager()->ApplyWindow(myCtrl->m_hWnd);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询