| 定数 | 解説 |
|---|---|
| TCS_BUTTONS | タブをプッシュボタンとして表示する |
| TCS_FIXEDWIDTH | 全てのタブを同じサイズで表示する |
| TCS_FOCUSNEVER | タブは入力フォーカスを受けない |
| TCS_FOCUSONBUTTONDOWN | タブは、選択されと入力フォーカスを受ける |
| TCS_FORCEICONLEFT | タブアイコンを左詰めにし、テキストをセンタリングする |
| TCS_FORCELABELLEFT | アイコンとテキストを左詰にする |
| TCS_MULTILINE | 幅に対し、一行で全てのタブを表示できない場合 タブを改行し、複数行で表示する |
| TCS_OWNERDRAWFIXED | オーナー描画タブである |
| TCS_RIGHTJUSTIFY | 全てのタブの合計の幅が、タブコントロール全体のサイズになるまで拡大される |
| TCS_SINGLELINE | タブが一行で表示される デフォルトではこのスタイルが用いられる |
| TCS_TABS | タブは、デフォルトスタイルで表示される |
| TCS_TOOLTIPS | ツールヒントコントロールが作成され TTN_NEEDTEXT を発行する |
typedef struct tagTCITEM {
UINT mask;
#if (_WIN32_IE >= 0x0300)
DWORD dwState;
DWORD dwStateMask;
#else
UINT lpReserved1;
UINT lpReserved2;
#endif
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
} TCITEM, FAR *LPTCITEM;
mask メンバには、取得、または設定するメンバを表すフラグを指定します| 定数 | 解説 |
|---|---|
| TCIF_ALL | 全てのメンバが有効 |
| TCIF_IMAGE | image メンバが有効 |
| TCIF_PARAM | iParam メンバが有効 |
| TCIF_RTLREADING | タブのテキストを右から左へ表示する ヘブライ語、またはアラビア語で有効 |
| TCIF_TEXT | pszText |
#include <windows.h>
#include <commctrl.h>
#define TITLE TEXT("Kitty on your lap")
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hTab;
static TCITEM tc_item;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
InitCommonControls();
hTab = CreateWindowEx( 0 , WC_TABCONTROL , NULL ,
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE ,
0 , 0 , 10 , 10 , hWnd , (HMENU)0x10 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL
);
tc_item.mask = TCIF_TEXT;
tc_item.pszText = TITLE;
TabCtrl_InsertItem(hTab , 0 , &tc_item);
tc_item.pszText = TEXT("Tokyo mew mew");
TabCtrl_InsertItem(hTab , 1 , &tc_item);
return 0;
case WM_SIZE:
MoveWindow(hTab , 0 , 0 , LOWORD(lp) , 30 , TRUE);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hWnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (hWnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

typedef struct tagNMHDR {
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
hwndFrom には、メッセージを送信するコントロールのハンドルを、#include <windows.h>
#include <commctrl.h>
#define TITLE TEXT("Kitty on your lap")
#define TARUTO TEXT("Magical nyan nyan TARUTO")
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
HDC hdc;
PAINTSTRUCT ps;
TCITEM tc_item;
static PTSTR pstr;
static HWND hTab;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
InitCommonControls();
hTab = CreateWindowEx( 0 , WC_TABCONTROL , NULL ,
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE ,
0 , 0 , 10 , 10 , hWnd , (HMENU)0x10 ,
((LPCREATESTRUCT)lp)->hInstance , NULL
);
tc_item.mask = TCIF_TEXT;
tc_item.pszText = TITLE;
TabCtrl_InsertItem(hTab , 0 , &tc_item);
tc_item.pszText = TARUTO;
TabCtrl_InsertItem(hTab , 1 , &tc_item);
return 0;
case WM_SIZE:
MoveWindow(hTab , 0 , 0 , LOWORD(lp) , 30 , TRUE);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd , &ps);
TextOut(hdc , 0 , 30 , pstr , lstrlen(pstr));
EndPaint(hWnd , &ps);
return 0;
case WM_NOTIFY:
switch (((NMHDR *)lp)->code) {
case TCN_SELCHANGE:
if (TabCtrl_GetCurSel(hTab) == 0) pstr = TITLE;
else pstr = TARUTO;
break;
}
InvalidateRect(hWnd , NULL , TRUE);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hWnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (hWnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
