Я создаю вкладку управления в 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);
а также я создаю два диалога здесь, чтобы показать в каждой вкладке в качестве содержимого вкладки. Я создаю их с помощью диалогового окна выбора формы:
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 );
}
}
Теперь вкладка создана, и все в порядке (содержимое текущей вкладки не отображается), но когда я нажимаю на один из элементов вкладки, диалоговое окно закрывает все элементы управления вкладками, и вы больше не видите вкладки.
что случилось ? что я должен изменить?
Сразу после создания диалогов переместите / измените их размер с помощью MoveWindow. Управляющее сообщение вкладки TCM_ADJUSTRECT может помочь вам определить правильную позицию / размер для создания диалогов.
Других решений пока нет …