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;
}

转载于:https://www.cnblogs.com/aoyihuashao/archive/2009/12/14/1623692.html

XTP界面在Dialog里的实现相关推荐

  1. android自定义键盘遮挡,android中键盘遮挡了dialog里的内容怎么处理

    在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入框被系统键 ...

  2. 华为服务器web界面配置文件,服务器里web如何配置文件

    服务器里web如何配置文件 内容精选 换一换 Web服务端证书用于客户端浏览器和Web服务器之间的通讯,实现数据信息在客户端和Web服务器之间的加密传输,可以防止数据信息的泄露.为提高安全性,建议替换 ...

  3. ios 默认字体加粗

    [UIFont boldSystemFontOfSize:XXX]; XXX 指的是字号 查看全文 http://www.taodudu.cc/news/show-4220215.html 相关文章: ...

  4. Scott Mitchell 的ASP.NET 2.0数据教程之三十九:: 在编辑和插入界面里添加验证控件...

    原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的 ...

  5. QT-子线程或自定义类操作访问主界面UI控件的几种方法

    前言 QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: 1.将ui指针公开后直接访问 (1)例如有个自己 ...

  6. 【DevOps进行时】C/S端界面自动化测试:微软UIAutomation实践

    在界面自动化测试领域里存在许多流行的自动化测试工具,例如目前比较受欢迎的开源自动化工具Selenium.Katalon:HP旗下知名的商业软件Unified Functional Testing(更名 ...

  7. Android开发:利用Activity的Dialog风格完成弹出框设计

    转:http://www.linuxidc.com/Linux/2011-08/41933.htm 在我们使用Dialog时,如果需要用到很多自己设计的控件,虽然可以让弹出框显示出我们需要的界面,但却 ...

  8. cocos2dx 背包界面的实现

    由于最近负面情绪比较多,说以废话比较多.看博客的朋友可以直接跳到下面的==正题== 如果是连博客都不想看的,可以直接看代码(最下方). 最近的2周感觉被项目给压榨了.连着忙了2周,任务比较赶是一个,其 ...

  9. 手把手教你用鸿蒙HarmonyOS实现微信聊天界面(三)

    简介 本系列文章记录作者大三开学第一个月中学习HarmonyOS移动应用开发学习经历,此篇为<微信聊天界面>项目,实现功能有 1.聊天信息功能,包括图片.文字 2.发送定位功能 3.选择发 ...

最新文章

  1. rxandroid 源码分析
  2. ubuntu14.04安装dropbox
  3. git查看某个文件的修改历史
  4. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools
  5. wordpress footer置底
  6. Linux bind DNS配置
  7. mysql sycho_2005年12月23日
  8. 运维工作的OKR愿景、战略和目标设计示例
  9. 翻译狗文档免费下载手册(补充版)
  10. LAIC2022司法人工智能挑战赛 - 司法文本小样本多任务Baseline
  11. DropBox系列-安卓DropBox介绍
  12. 南邮 | 计算机图形学大作业:Skybox + Shadow volume
  13. 群辉docker安装树莓派镜像_群晖 Docker 安装 AriaNg+File Browser
  14. java实现前缀树--过滤敏感词汇
  15. 面部AR遥控器:使用AR制作动画
  16. freeSWITCH detect_speech源码分析
  17. 聊一位倾慕已久的他——致敬图灵
  18. 30_java之DButils工具类
  19. 无效合同效力的认定方式,需要去法院申请确认吗?
  20. dos重启计算机命令行,命令行中,重启计算机的命令是什么

热门文章

  1. 如何加强大数据安全管理和防护
  2. OpenGL 渲染正方体
  3. Centos 7 x64 英文版安装
  4. 高德地图 poi 搜索
  5. java打印字符串显示_JAVA调用系统打印机打印字符串
  6. 通过access口加vlan标签吗_浅谈-华为vlan下access、trunk、hybrid的配置及标签分析
  7. Mac电脑:您的安全性偏好设置仅允许安装来自App Store和被认可的开发者的应用(解决方法)
  8. 车牌号合法性校验正则表达式(含新能源车牌)
  9. HEVC Tile 编码器-kvazaar
  10. linux格式化为fat,linux下把u盘格式化成 FAT32的例子