本人新手求助
WTL工程中Dialog窗体中如何添加TabControl.
Property Sheet.好像不能嵌在Dialog中.或者可以,没找着Sample找到一篇:
http://www.codeproject.com/KB/tabs/tabviewctrl.aspx
是SDI窗体,结果没试成功.请大家帮忙.

解决方案 »

  1.   

    http://www.codeproject.com/KB/tabs/tabviewctrl.aspx
    此篇是类写的控件Dialog中在工具栏中拖到对话框中就可以了,然后再对控件进行改造。
      

  2.   

    sorry,我没有听懂你的意思
    如果我要添加两个Tab,每个Tab里面有不同的子控件
    property sheet.只要添加两个Dialog资源即可.再sheet.AddPage.但是我不知道如何把property sheet 嵌入主窗体dialog中
    Tab Contorl如何做?
    我的mail:  haozes(#)gmail.com
      

  3.   

    property sheet生来就是为独立对话框而存在,不适合再作为子窗口,改造的代价过大,还不如写个新的。自己添加TAB CTRL,每个项对应一个子对话框(无边框、WS_CHILD、初始隐藏),响应TAB事件,点哪个标签就在相同的位置显示对应的子对话框,其它隐藏。代码量应该不大的。
      

  4.   

    在网上找到的都是MFC的TAB CTRL DEMO.我试着用WTL的控件未能成功.造化太浅.
    求DEMO
      

  5.   

    在<atlctrlx.h>中有一个分装好的CTabView类, 创建一个实例直接Create就行
      

  6.   

    //声明全局变量
    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);
    }