WTL中如何在Dialog里添加Tab Control

fancystyle 2010-02-26 05:13:47
本人新手求助
WTL工程中Dialog窗体中如何添加TabControl.
Property Sheet.好像不能嵌在Dialog中.或者可以,没找着Sample

找到一篇:
http://www.codeproject.com/KB/tabs/tabviewctrl.aspx
是SDI窗体,结果没试成功.

请大家帮忙.


...全文
859 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssiori 2010-03-01
  • 打赏
  • 举报
回复
//声明全局变量
HWND hwndTab,Child1hWnd,Child2hWnd;

//向对话框托入TAB控件。在主对话框的WM_INITDIALOG消息中处理

InitCommonControls();
hwndTab = GetDlgItem(hDlg, IDC_TAB1);

TCITEM ItemStruct;
ItemStruct.mask = TCIF_TEXT;
ItemStruct.iImage = 0;
ItemStruct.lParam = 0;
ItemStruct.pszText = TEXT("Col1");
ItemStruct.cchTextMax = 4;
SendMessage(hwndTab, TCM_INSERTITEM, 0, (LPARAM)&ItemStruct);

ItemStruct.pszText = TEXT("Col2");
ItemStruct.cchTextMax = 4;
SendMessage(hwndTab, TCM_INSERTITEM, 1, (LPARAM)&ItemStruct);

//添加两个对话框,如果要处理子对话框消息则给CreateDialogParam函数的第四个参数传一个函数地址
Child1hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hwndTab, (DLGPROC)NULL, 0);
Child2hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hwndTab, (DLGPROC)NULL, 0);

//显示第一个对话框
ShowWindow(Child1hWnd, SW_SHOWDEFAULT);

//===================
//处理对话框的WM_NOTIFY消息
if ( *(LPDWORD)((LPBYTE)lParam+8)==TCN_SELCHANGE )
{
ShowWindow(Child1hWnd,SW_HIDE);
ShowWindow(Child2hWnd,SW_HIDE);
int i = SendMessage(hwndTab,TCM_GETCURSEL,0,0);
if (i == 0)
ShowWindow(Child1hWnd,SW_SHOWDEFAULT);
else
ShowWindow(Child2hWnd,SW_SHOWDEFAULT);
}
fancystyle 2010-02-27
  • 打赏
  • 举报
回复
引用 3 楼 jameshooo 的回复:
property sheet生来就是为独立对话框而存在,不适合再作为子窗口,改造的代价过大,还不如写个新的。

自己添加TAB CTRL,每个项对应一个子对话框(无边框、WS_CHILD、初始隐藏),响应TAB事件,点哪个标签就在相同的位置显示对应的子对话框,其它隐藏。代码量应该不大的。

在网上找到的都是MFC的TAB CTRL DEMO.我试着用WTL的控件未能成功.造化太浅.
求DEMO
bdzwj 2010-02-27
  • 打赏
  • 举报
回复
在<atlctrlx.h>中有一个分装好的CTabView类, 创建一个实例直接Create就行
jameshooo 2010-02-26
  • 打赏
  • 举报
回复
property sheet生来就是为独立对话框而存在,不适合再作为子窗口,改造的代价过大,还不如写个新的。

自己添加TAB CTRL,每个项对应一个子对话框(无边框、WS_CHILD、初始隐藏),响应TAB事件,点哪个标签就在相同的位置显示对应的子对话框,其它隐藏。代码量应该不大的。
fancystyle 2010-02-26
  • 打赏
  • 举报
回复
sorry,我没有听懂你的意思
如果我要添加两个Tab,每个Tab里面有不同的子控件
property sheet.只要添加两个Dialog资源即可.再sheet.AddPage.但是我不知道如何把property sheet 嵌入主窗体dialog中
Tab Contorl如何做?
我的mail: haozes(#)gmail.com
lion_wing 2010-02-26
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/tabs/tabviewctrl.aspx
此篇是类写的控件

Dialog中在工具栏中拖到对话框中就可以了,然后再对控件进行改造。
内容概要:本文研究了基于粒子群算法(PSO)的微网优化调度方法,重点探讨了需求响应机制对微网运行特性的影响。通过构建包含分布式电源、储能系统及可控负荷的微网综合模型,采用粒子群算法求解多目标优化问题,旨在实现系统运行经济性、能源利用效率与供电可靠性的协调优化。文详细阐述了需求响应策略的数学建模过程,分析其在负荷转移、削峰填谷、降低用电成本等方面的作用机制,并基于Matlab平台完成了算法编程与仿真验证。通过设置多种运行场景进行对比实验,结果表明所提出的优化模型能有效降低微网综合运行成本,提高可再生能源消纳能力,增强系统对不确定性因素的适应性与调度灵活性。; 适合人群:具备电力系统基础理论知识和一定Matlab编程能力的科研人员及工程技术人员,尤其适用于从事微电网能量管理、智能配电网优化、需求侧响应等领域研究的研究生及以上学历人员。; 使用场景及目标:①应用于微电网能量管理系统,实现源-荷-储多主体协同优化调度;②支持高比例可再生能源接入场景下的配电系统经济调度与需求侧管理决策;③为学术研究提供粒子群算法在复杂电力系统优化问题应用的完整案例参考。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点关注目标函数设计、约束条件处理、粒子群参数配置等关键环节,鼓励动手调试代码并尝试调整模型结构或参数设置,以观察不同条件下优化结果的变化规律,从而深化对智能优化算法与微网调度机制融合应用的理解。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧