HWND CreateToolbarEx( HWND hwnd , DWORD ws , UINT wID , int nBitmaps, HINSTANCE hBMInst , UINT wBMID , LPCTBBUTTON lpButtons , int iNumButtons , int dxButton , int dyButton , int dxBitmap , int dyBitmap , UINT uStructSize );hwnd には、ツールバーの親ウィンドウを指定します
| 定数 | 解説 |
|---|---|
| CCS_ADJUSTABLE | 組み込みカスタマイズ機能を有効にする ボタンの位置をドラッグで移動させたり、ボタンの削除が行える |
| TBSTYLE_ALTDRAG | ALt キーを押しながら、ツールバーボタンをドラッグし ボタンの位置の移動を有効にすることを示す CCS_ADJUSTABLE スタイルを設定しなければならない |
| TBSTYLE_TOOLTIPS | ツールバー内のボタンに対する説明的なテキストの表示に用いる ツールバーヒントコントロールの作成を有効にする |
| TBSTYLE_WRAPABLE | 複数行のボタンを持つことができるツールバーを作成する |

typedef struct _TBBUTTON {
int iBitmap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
DWORD dwData;
int iString;
} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;
iBitmap には、ボタンイメージの 0 から数えるインデックスを指定します| 定数 | 解説 |
|---|---|
| TBSTATE_CHECKED | TBSTYLE_CHECK ボタンの場合 押された状態になっている |
| TBSTATE_ENABLED | ボタンは使用可能である |
| TBSTATE_HIDDEN | ボタンは非表示である |
| TBSTATE_INDETERMINATE | ボタンは淡色表示になっている |
| TBSTATE_PRESSED | ボタンは押されている |
| TBSTATE_WRAP | このボタンの後で改行が発生する TBSTATE_ENABLED も指定されていなければならない |
| 定数 | 解説 |
|---|---|
| TBSTYLE_BUTTON | 標準プッシュボタン |
| TBSTYLE_CHECK | チェックボックス型のボタン ボタンの押すたびに、押された状態と押されていない状態が入れ替わる |
| TBSTYLE_CHECKGROUP | ラジオボタン型のボタン グループ内の他のボタンが押されるまで、押した状態を保つ |
| TBSTYLE_GROUP | グループ内の別のボタンが押されるまで 押された状態を保つ標準ボタン |
| TBSTYLE_SEP | ボタングループの間に隙間をあけ、区切り線の役割をする |
/*resource.h*/ #define IDW_TOOL 100 #define IDB_TOOL 101
/*リソーススクリプト*/ #include "resource.h" IDB_TOOL BITMAP DISCARDABLE "test.bmp"
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
#define TITLE TEXT("Kitty on your lap")
TBBUTTON tbButton[] = {
{ 0 , 1 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0} ,
{ 1 , 2 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0}
};
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hToolbar;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
InitCommonControls();
hToolbar = CreateToolbarEx(
hWnd , WS_CHILD | WS_VISIBLE , IDW_TOOL , 2 ,
((LPCREATESTRUCT)(lp))->hInstance , IDB_TOOL ,
tbButton , 2 , 0 , 0 , 20 , 17 , sizeof (TBBUTTON)
);
return 0;
case WM_SIZE:
SendMessage(hToolbar , WM_SIZE , wp , lp);
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;
}

| 値 | リソース |
|---|---|
| IDB_STD_LARGE_COLOR | 大きいカラー標準ビットマップ |
| IDB_STD_SMALL_COLOR | 小さいカラー標準ビットマップ |
| IDB_VIEW_LARGE_COLOR | 大きいカラービュービットマップ |
| IDB_VIEW_SMALL_COLOR | 小さいカラービュービットマップ |
| 定数 | 解説 |
|---|---|
| STD_COPY | コピー |
| STD_CUT | カット |
| STD_DELETE | 削除 |
| STD_FILENEW | 新規作成 |
| STD_FILEOPEN | ファイルを開く |
| STD_FILESAVE | 保存 |
| STD_FIND | 検索 |
| STD_HELP | ヘルプ |
| STD_PASTE | 貼りつけ |
| STD_PRINT | 印刷 |
| STD_PRINTPRE | 印刷プレビュー |
| STD_PROPERTIES | プロパティ |
| STD_REDOW | やり直し |
| STD_REPLACE | 置換え |
| STD_UNDO | 元に戻す |
| VIEW_DETAILS | 詳細 |
| VIEW_LARGEICONS | 大きいアイコンとして表示 |
| VIEW_LIST | 一覧として表示 |
| VIEW_SMALLICONS | 小さいアイコンとして表示 |
| VIEW_SORTDATE | 一覧を日付順に表示 |
| VIEW_SORTNAME | 一覧を名前順に表示 |
| VIEW_SORTSIZE | 一覧をサイズ順に表示 |
| VIEW_SORTTYPE | 一覧をタイプ順に表示 |
#include <windows.h>
#include <commctrl.h>
#define TITLE TEXT("Kitty on your lap")
TBBUTTON tbButton[] = {
{ STD_FILENEW , 1 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_FILEOPEN , 2 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_FILESAVE , 3 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ 0 , 0 , TBSTATE_ENABLED , TBSTYLE_SEP , 0 , 0 , 0 } ,
{ STD_COPY , 4 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_CUT , 5 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_DELETE , 6 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 }
};
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hToolbar;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
InitCommonControls();
hToolbar = CreateToolbarEx(
hWnd , WS_CHILD | WS_VISIBLE , 0 , 6 ,
(HINSTANCE)HINST_COMMCTRL ,
IDB_STD_SMALL_COLOR ,
tbButton , 7 , 0 , 0 , 0 , 0 , sizeof (TBBUTTON)
);
return 0;
case WM_SIZE:
SendMessage(hToolbar , WM_SIZE , wp , lp);
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 {
HINSTANCE hInst;
UINT nID;
} TBADDBITMAP, *LPTBADDBITMAP;
hInst は、ビットマップリソースを格納するモジュールのインスタンスハンドルを#include <windows.h>
#include <commctrl.h>
#define TITLE TEXT("Kitty on your lap")
TBBUTTON tbButton[] = {
{ STD_FILENEW , 1 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_FILEOPEN , 2 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_FILESAVE , 3 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ 0 , 0 , TBSTATE_ENABLED , TBSTYLE_SEP , 0 , 0 , 0 } ,
{ STD_COPY , 4 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_CUT , 5 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ STD_DELETE , 6 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ 0 , 0 , TBSTATE_ENABLED , TBSTYLE_SEP , 0 , 0 , 0 } ,
{ VIEW_NEWFOLDER , 7 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
{ VIEW_PARENTFOLDER , 8 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 } ,
};
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hToolbar;
TBADDBITMAP tb;
int iIndex;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
InitCommonControls();
hToolbar = CreateToolbarEx(
hWnd , WS_CHILD | WS_VISIBLE , 0 , 6 ,
(HINSTANCE)HINST_COMMCTRL ,
IDB_STD_SMALL_COLOR ,
tbButton , 7 , 0 , 0 , 0 , 0 , sizeof (TBBUTTON)
);
tb.hInst = HINST_COMMCTRL;
tb.nID = IDB_VIEW_SMALL_COLOR;
iIndex = SendMessage(hToolbar , TB_ADDBITMAP , 2 , (LPARAM)&tb);
tbButton[8].iBitmap += iIndex;
tbButton[9].iBitmap += iIndex;
SendMessage(hToolbar , TB_ADDBUTTONS , 3 , (LPARAM) &tbButton[7]);
return 0;
case WM_SIZE:
SendMessage(hToolbar , WM_SIZE , wp , lp);
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;
}

HWND CreateToolbarEx( HWND hwnd , DWORD ws , UINT wID , int nBitmaps, HINSTANCE hBMInst , UINT wBMID , LPCTBBUTTON lpButtons , int iNumButtons , int dxButton , int dyButton , int dxBitmap , int dyBitmap , UINT uStructSize );ツールバーを指定ウィンドウに表示します
| 定数 | 解説 |
|---|---|
| CCS_ADJUSTABLE | 組み込みカスタマイズ機能を有効にする ボタンの位置をドラッグで移動させたり、ボタンの削除が行える |
| TBSTYLE_ALTDRAG | ALt キーを押しながら、ツールバーボタンをドラッグし ボタンの位置の移動を有効にすることを示す CCS_ADJUSTABLE スタイルを設定しなければならない |
| TBSTYLE_TOOLTIPS | ツールバー内のボタンに対する説明的なテキストの表示に用いる ツールバーヒントコントロールの作成を有効にする |
| TBSTYLE_WRAPABLE | 複数行のボタンを持つことができるツールバーを作成する |