win32 创建tab控件

平常都是用mfc,今天要用win32操作Dialog,从网上借鉴别人的代码, 已经完成,记录一下,方便以后熟悉。

1:CreateDialog(hInst, (LPCTSTR)IDD_MAIN, 0, (DLGPROC)MainDlgProc); 调用这个函数,用已经再资源模板画好的对话框创建一个dialog

2:在IDD_MAIN对话框资源上添加一个TAB控件,然后再添加几个对话框资源。

3:在MainDlgProc消息处理函数里面,收到WM_INITDIALOG消息的时候,初始化TAB控件

4:直接通过GetDlgItem获取TAB控件的窗口句柄,然后依次插入标签,再创建对应标签的对话框,并移动对话框到合适位置。

注意,对话框的属性设置为child,否则,当主窗口移动的时候,TAB里面的对话框不会跟随移动。伪代码如下:

    hWnd= GetDlgItem(hWnd, IDC_TAB);    
    if (NULL == hWnd)
    {      
        return FALSE;
    }
    // 定义一个二维数组 存放tab标签名字
    char *tabname[3] = { "TAB1","TAB2","TAB3"}; 
    //具体开始设置 tie的字段 Mask psztext,ccxtextmax,image,lparam
    TCITEM tie;
    tie.mask = TCIF_TEXT | TCIF_IMAGE;//psztext字段有效
    tie.iImage = -1;
    for (int i = 0; i < 3; i++)
    {
        tie.pszText = tabname[i];
        TabCtrl_InsertItem(hWnd, i, &tie);
    }
    //////////////////////////////////////////////////////////////// 在tab标签中显示 别的控件
    RECT rect;
    GetClientRect(hWnd, &rect);
    int nDialogResourceID[3] = { IDD_PAGE1,IDD_PAGE2,IDD_PAGE3 }; 
    // 将两个窗口往 tab控件位置移动
    for (int i = 0; i<3; i++)
    {
        g_page_hwnd[i] = CreateDialog(g_hInst, (LPCTSTR)nDialogResourceID[i], g_table_hwnd, DlgProc[i]);       
        MoveWindow(g_page_hwnd[i], rect.left+1,rect.top+22, rect.right - rect.left-3, rect.bottom - rect.top-22, FALSE);
    }

   ShowWindow(g_page_hwnd[0], SW_SHOW);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章