平常都是用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);