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窗体,结果没试成功.

请大家帮忙.


...全文
804 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中在工具栏中拖到对话框中就可以了,然后再对控件进行改造。

3,245

社区成员

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

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