создать вкладки в WM_INITDIALOG
следующим образом:ребенка диалогового управления вкладкой покрывает вкладку самого
INITCOMMONCONTROLSEX icex = {0};
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_TAB_CLASSES;
InitCommonControlsEx(&icex);
TCITEM tie;
LPSTR text = "my tab";
tie.mask = TCIF_TEXT|TCIF_IMAGE;
tie.iImage = -1;
tie.pszText = text;
hTab = CreateWindow(WC_TABCONTROL, "", WS_CHILD |WS_CLIPSIBLINGS| WS_VISIBLE,
0,0, 400, 350, hWnd,NULL, g_hInstance, NULL);
TabCtrl_InsertItem(hTab,0,&tie);
TabCtrl_InsertItem(hTab,1,&tie);
TabCtrl_InsertItem(hTab,2,&tie);
, а также создать два диалога здесь, чтобы показать в каждой вкладке, как содержимое вкладки. Я создаю их с диалогом набор инструментов выбора FormView:
hwndTabcontentDialog1 = CreateDialogParam(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDD_FORMVIEW1), hTab, (DLGPROC)Proc1,lParam);
hwndTabcontentDialog2 = CreateDialogParam(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDD_FORMVIEW), hTab, (DLGPROC)Proc2,lParam);
сейчас в WM_NOTIFY
Я делаю это, чтобы содержание каждой вкладки при ее нажатии:
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case TCN_SELCHANGE:
{
if(TabCtrl_GetCurSel(((LPNMHDR) lParam) -> hwndFrom) == 0) {
ShowWindow(hwndTabcontentDialog1, SW_SHOW);
ShowWindow(hwndTabcontentDialog2, SW_HIDE);
} else {
ShowWindow(hwndTabcontentDialog1, SW_HIDE);
ShowWindow(hwndTabcontentDialog2, SW_SHOW);
}
}
теперь закладка создается и все хорошо (содержание текущей вкладки не видно), но когда я нажимаю на один из элементов табуляции, диалоговое окно закрывает все элементы управления вкладками, и вы больше не видите вкладки. что не так? что я должен изменить?
Похоже, вы устанавливаете размер дочернего окна на размер элемента управления вкладки. Если это так, что не будет работать, поскольку вкладки будут рисоваться в клиентской области, а не в неклиентской области. Получите высоту вкладок, вычитайте из высоты элемента управления вкладки и укажите размер, который вы должны использовать (смещение от вершины курса). В качестве альтернативы размер может быть правильным, но вы не даете ему смещения для отображения ниже фактических вкладок. –
вы правы, когда я изменяю X pos и Y pos дочерних диалогов, появляется элемент управления родительских вкладок, но только когда я изменяю позиции из свойств визуальной панели инструментов. изнутри кода я не мог его изменить, используя функции Getclientrect и setwindowpos. я использовал их либо внутри 'wm_paint', и' wm_size' – user667222