#define ID_TABCTL 13
/*
some code
*/
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
static HWND hTab;
const int ciCount = 10;
static HWND hButton[ciCount];
static int iIndex;
switch (message)
{
case WM_CREATE:
{
InitCommonControls();
hTab = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TABCONTROL, "", WS_CHILD | WS_VISIBLE, 0, 0, 400, 300, hWnd, (HMENU)ID_TABCTL, hInst, NULL);
TCITEM item = {0};
for (int i = 0; i < ciCount; i++)
{
char szBuffer[25] = "";
sprintf(szBuffer, "%s %d", "tab №", i + 1);
item.mask = TCIF_TEXT;
item.cchTextMax = (int)strlen(szBuffer);
item.pszText = szBuffer;
hButton = CreateWindow("button", szBuffer, WS_CHILD, 50, 50 + i * 20, 100, 30, hWnd, (HMENU)(ID_TABCTL + i + 1), hInst, NULL);//создаем кнопки
TabCtrl_InsertItem(hTab, i, &item);//добовляем табы
}
ShowWindow(hButton[iIndex], SW_SHOW);//показываем первую кнопку
}
break;
case WM_NOTIFY:
{
if (wParam == ID_TABCTL)//если прислал таб
{
NMHDR* pmhdr = (LPNMHDR) lParam;
if (pmhdr -> code == TCN_SELCHANGE)
{
ShowWindow(hButton[iIndex], SW_HIDE);прячем старую кнопку
iIndex = TabCtrl_GetCurSel(hTab);//получаем какой таб выбран
ShowWindow(hButton[iIndex], SW_SHOW);//показуем соответствующюю кнопку
}
}
}
break;
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
TabControl
Мужики, как плохо вы обо мне не думали, но никак не могу въехать, как пользоваться элементом TabControl! Может скажите, как, например на него поместить кнопки и т.п.
Код:
тоесть за отрисовку содержимого конкретного таба ты должен отвечать сам. почитать msdn полезная весчь, дополнительные фитчи узнаешь про таб
Благодарю!