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);

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