Вы должны сначала создать диалог.Затем создайте вкладку как дочерний элемент управления диалогового окна.
Проще использовать редактор диалогов, чтобы перетаскивать элемент управления вкладкой в диалог.Затем вы можете пропустить CreateWindow(WC_TABCONTROL...)
и использовать GetDlgItem(dialog_handle, IDC_TAB1)
, чтобы найти элемент управления вкладкой.
Вам также необходимо создать 2 дочерних диалоговых окна без полей в редакторе ресурсов (не всплывающее диалоговое окно).Затем используйте CreateDialog(0, MAKEINTRESOURCE(IDD_PAGE1), dialog_handle, TabChildProc)
, чтобы поместить дочерние диалоги внутри вкладки.
При создании модального диалога вы можете использовать DialogBox
вместо CreateDialogParam
и выполнить инициализацию в WM_INITDIALOG
HINSTANCE hinst = GetModuleHandle(NULL);
HWND dialog_handle = CreateDialogParam(hinst,
MAKEINTRESOURCE(IDD_DIALOG2), 0, (DLGPROC)Tab1Dlg::DlgProc, (LPARAM)0);
ShowWindow(dialog_handle, SW_SHOW);
RECT rc;
GetClientRect(dialog_handle, &rc);
CreateWindow(WC_TABCONTROL, "Test", TCS_FLATBUTTONS | WS_CHILD | WS_VISIBLE,
rc.left + 10, rc.top + 10,
rc.right - 20, rc.bottom - 20 - 30,
dialog_handle, (HMENU)IDC_TAB1, hinst, NULL);
tab_handle = GetDlgItem(dialog_handle, IDC_TAB1);
TCITEM tci = { 0 };
tci.mask = TCIF_TEXT;
char buf[50];
tci.pszText = buf;
strcpy_s(buf, "Page1");
tci.cchTextMax = strlen(buf);
TabCtrl_InsertItem(tab_handle, 0, &tci);
strcpy_s(buf, "Page2");
tci.cchTextMax = strlen(buf);
TabCtrl_InsertItem(tab_handle, 1, &tci);