Code:
#include <windows.h>
#define _WIN32_IE 0x0501
#include <commctrl.h>
#define idFileNew 1000
#define idFileOpen 1001
#define idSaveAs 1002
#define idCopy 1003
#define idCut 1004
#define idDelete 1005
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwICC = ICC_COOL_CLASSES;
InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
BOOL Ret = InitCommonControlsEx(&InitCtrls);
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH)COLOR_BTNSHADOW;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (
0,
szClassName,
"Rebar - Wnd",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
544,
375,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
ShowWindow (hwnd, nFunsterStil);
while (GetMessage (&messages, NULL, 0, 0))
{
if(!IsDialogMessage(hwnd,&messages))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND Rebar, ToolBar1, ToolBar2;
switch (message)
{
case WM_CREATE:
{
REBARINFO RebarInfo;
REBARBANDINFO RebarBandInfo;
Rebar = CreateWindowEx(WS_EX_TOOLWINDOW,REBARCLASSNAME,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|RBS_VARHEIGHT|RBS_BANDBORDERS|RBS_DBLCLKTOGGLE|RBS_DBLCLKTOGGLE|CCS_NODIVIDER,0,0,0,0,hwnd,NULL,GetModuleHandle(NULL),NULL);
if(!Rebar)
{
return 0;
}
RebarInfo.cbSize = sizeof(REBARINFO);
RebarInfo.fMask = 0;
RebarInfo.himl = (HIMAGELIST)NULL;
if(!SendMessage(Rebar,RB_SETBARINFO,0,(LPARAM)&RebarInfo))
{
return 0;
}
RebarBandInfo.cbSize = sizeof(REBARBANDINFO);
RebarBandInfo.fMask = RBBIM_BACKGROUND|RBBIM_CHILD|RBBIM_CHILDSIZE|RBBIM_COLORS|RBBIM_SIZE|RBBIM_STYLE|RBBIM_TEXT; //RBBIM_HEADERSIZE|RBBIM_IDEALSIZE|RBBIM_ID|RBBIM_IMAGE|RBBIM_LPARAM
RebarBandInfo.fStyle = RBBS_CHILDEDGE|RBBS_FIXEDBMP;
RebarBandInfo.hbmBack = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(""));
SendMessage(Rebar,RB_INSERTBAND,(WPARAM)-1,(LPARAM)&RebarBandInfo);
//ToolBar1
TBBUTTON TbButton[3];
TBADDBITMAP TbAddBitmap;
ToolBar1 = CreateWindowEx(0,TOOLBARCLASSNAME,NULL,WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT|TBSTYLE_TRANSPARENT,0,0,0,0,Rebar,NULL,GetModuleHandle(NULL),NULL);
SendMessage(ToolBar1,TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON),0);
TbAddBitmap.hInst = HINST_COMMCTRL;
TbAddBitmap.nID = IDB_STD_SMALL_COLOR;
SendMessage(ToolBar1,TB_ADDBITMAP,0,(LPARAM)&TbAddBitmap);
ZeroMemory(TbButton, sizeof(TbButton));
TbButton[0].iBitmap = STD_FILENEW;
TbButton[0].fsState = TBSTATE_ENABLED;
TbButton[0].fsStyle = TBSTYLE_BUTTON;
TbButton[0].idCommand = idFileNew;
TbButton[1].iBitmap = STD_FILEOPEN;
TbButton[1].fsState = TBSTATE_ENABLED;
TbButton[1].fsStyle = TBSTYLE_BUTTON;
TbButton[1].idCommand = idFileOpen;
TbButton[2].iBitmap = STD_FILESAVE;
TbButton[2].fsState = TBSTATE_ENABLED;
TbButton[2].fsStyle = TBSTYLE_BUTTON;
TbButton[2].idCommand = idSaveAs;
SendMessage(ToolBar1,TB_ADDBUTTONS,sizeof(TbButton)/sizeof(TBBUTTON),(LPARAM)&TbButton);
long SizeTool1 = SendMessage(ToolBar1,TB_GETBUTTONSIZE,0,0);
RebarBandInfo.lpText = "ToolBar";
RebarBandInfo.hwndChild = ToolBar1;
RebarBandInfo.cxMinChild = 0;
RebarBandInfo.cyMinChild = HIWORD(SizeTool1);
RebarBandInfo.cx = 250;
SendMessage(Rebar,RB_INSERTBAND,(WPARAM)-1,(LPARAM)&RebarBandInfo);
//ToolBar2
ToolBar2 = CreateWindowEx(0,TOOLBARCLASSNAME,NULL,WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT|TBSTYLE_TRANSPARENT,0,0,0,0,Rebar,NULL,GetModuleHandle(NULL),NULL);
SendMessage(ToolBar2,TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON),0);
TbAddBitmap.hInst = HINST_COMMCTRL;
TbAddBitmap.nID = IDB_STD_SMALL_COLOR;
SendMessage(ToolBar2,TB_ADDBITMAP,0,(LPARAM)&TbAddBitmap);
ZeroMemory(TbButton, sizeof(TbButton));
TbButton[0].iBitmap = STD_COPY;
TbButton[0].fsState = TBSTATE_ENABLED;
TbButton[0].fsStyle = TBSTYLE_BUTTON;
TbButton[0].idCommand = idCopy;
TbButton[1].iBitmap = STD_CUT;
TbButton[1].fsState = TBSTATE_ENABLED;
TbButton[1].fsStyle = TBSTYLE_BUTTON;
TbButton[1].idCommand = idCut;
TbButton[2].iBitmap = STD_DELETE;
TbButton[2].fsState = TBSTATE_ENABLED;
TbButton[2].fsStyle = TBSTYLE_BUTTON;
TbButton[2].idCommand = idDelete;
SendMessage(ToolBar2,TB_ADDBUTTONS,sizeof(TbButton)/sizeof(TBBUTTON),(LPARAM)&TbButton);
long SizeTool2 = SendMessage(ToolBar2,TB_GETBUTTONSIZE,0,0);
RebarBandInfo.lpText = "ToolBar2";
RebarBandInfo.hwndChild = ToolBar2;
RebarBandInfo.cxMinChild = 300;
RebarBandInfo.cyMinChild = HIWORD(SizeTool2);
RebarBandInfo.cx = 250;
SendMessage(Rebar,RB_INSERTBAND,(WPARAM)-1,(LPARAM)&RebarBandInfo);
}break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
}
}break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
I use Dev-C++ 4.9.9.2 and "libcomctl32.a"