XTP界面在Dialog里的实现
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里的实现相关推荐
- android自定义键盘遮挡,android中键盘遮挡了dialog里的内容怎么处理
在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入框被系统键 ...
- 华为服务器web界面配置文件,服务器里web如何配置文件
服务器里web如何配置文件 内容精选 换一换 Web服务端证书用于客户端浏览器和Web服务器之间的通讯,实现数据信息在客户端和Web服务器之间的加密传输,可以防止数据信息的泄露.为提高安全性,建议替换 ...
- ios 默认字体加粗
[UIFont boldSystemFontOfSize:XXX]; XXX 指的是字号 查看全文 http://www.taodudu.cc/news/show-4220215.html 相关文章: ...
- Scott Mitchell 的ASP.NET 2.0数据教程之三十九:: 在编辑和插入界面里添加验证控件...
原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的 ...
- QT-子线程或自定义类操作访问主界面UI控件的几种方法
前言 QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: 1.将ui指针公开后直接访问 (1)例如有个自己 ...
- 【DevOps进行时】C/S端界面自动化测试:微软UIAutomation实践
在界面自动化测试领域里存在许多流行的自动化测试工具,例如目前比较受欢迎的开源自动化工具Selenium.Katalon:HP旗下知名的商业软件Unified Functional Testing(更名 ...
- Android开发:利用Activity的Dialog风格完成弹出框设计
转:http://www.linuxidc.com/Linux/2011-08/41933.htm 在我们使用Dialog时,如果需要用到很多自己设计的控件,虽然可以让弹出框显示出我们需要的界面,但却 ...
- cocos2dx 背包界面的实现
由于最近负面情绪比较多,说以废话比较多.看博客的朋友可以直接跳到下面的==正题== 如果是连博客都不想看的,可以直接看代码(最下方). 最近的2周感觉被项目给压榨了.连着忙了2周,任务比较赶是一个,其 ...
- 手把手教你用鸿蒙HarmonyOS实现微信聊天界面(三)
简介 本系列文章记录作者大三开学第一个月中学习HarmonyOS移动应用开发学习经历,此篇为<微信聊天界面>项目,实现功能有 1.聊天信息功能,包括图片.文字 2.发送定位功能 3.选择发 ...
最新文章
- rxandroid 源码分析
- ubuntu14.04安装dropbox
- git查看某个文件的修改历史
- 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools
- wordpress footer置底
- Linux bind DNS配置
- mysql sycho_2005年12月23日
- 运维工作的OKR愿景、战略和目标设计示例
- 翻译狗文档免费下载手册(补充版)
- LAIC2022司法人工智能挑战赛 - 司法文本小样本多任务Baseline
- DropBox系列-安卓DropBox介绍
- 南邮 | 计算机图形学大作业:Skybox + Shadow volume
- 群辉docker安装树莓派镜像_群晖 Docker 安装 AriaNg+File Browser
- java实现前缀树--过滤敏感词汇
- 面部AR遥控器:使用AR制作动画
- freeSWITCH detect_speech源码分析
- 聊一位倾慕已久的他——致敬图灵
- 30_java之DButils工具类
- 无效合同效力的认定方式,需要去法院申请确认吗?
- dos重启计算机命令行,命令行中,重启计算机的命令是什么