www.pudn.com > SDK 工具条,分割条,TREE 等控件演示代码.rar > toolbar1.cpp
#include "WinMain.h"
#include "toolbar1.h"
HWND hWndToolbar;
extern HINSTANCE hInst;
#define NUM_BUTTONS 8
HWND CreateAToolBar(HWND hwndParent)
{
TBADDBITMAP tbab;
TBBUTTON tbb[8];
// TBADDBITMAP tb;
int index , stdidx;
char szBuf[16];
int iLianjie, iZhuye, iZhuce,iJiasuo,iSuoji,iShezhi;
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_BAR_CLASSES;
InitCommonControlsEx(&amt;icex);
hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | CCS_ADJUSTABLE|TBSTYLE_EX_DRAWDDARROWS
|TBSTYLE_FLAT
|WS_BORDER
//|TBSTYLE_TRANSPARENT
, 0, 0, 0, 0, hwndParent,
(HMENU) IDR_TOOLBARER, hInst, NULL);
// tb.hInst = HINST_COMMCTRL;
// tb.nID = IDB_VIEW_LARGE_COLOR;
// SendMessage (hWndToolbar, TB_ADDBITMAP, 0, (LPARAM)&amt;tb);
setimagelistcool();
setimagelisthot();
// setbktoolbar();
SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);
LoadString(hInst, IDS_LIANJIE, szBuf, 10-1); //1
iLianjie = SendMessage(hWndToolbar, TB_ADDSTRING, 0, (LPARAM) (LPSTR) szBuf);
LoadString(hInst, IDS_ZHUYE, szBuf, 10-1); //2
iZhuye = SendMessage(hWndToolbar, TB_ADDSTRING, (WPARAM) 0,
(LPARAM) (LPSTR) szBuf);
LoadString(hInst, IDS_ZHUCE, szBuf, 10-1); //3
iZhuce = SendMessage(hWndToolbar, TB_ADDSTRING, (WPARAM) 0,
(LPARAM) (LPSTR) szBuf);
LoadString(hInst, IDS_JIASUO, szBuf,10-1); //4
iJiasuo = SendMessage(hWndToolbar, TB_ADDSTRING, (WPARAM) 0,
(LPARAM) (LPSTR) szBuf);
LoadString(hInst, IDS_SUOJI, szBuf,10-1); //5
iSuoji = SendMessage(hWndToolbar, TB_ADDSTRING, (WPARAM) 0,
(LPARAM) (LPSTR) szBuf);
LoadString(hInst, IDS_SHEZHI, szBuf,10-1); //5
iShezhi = SendMessage(hWndToolbar, TB_ADDSTRING, (WPARAM) 0,
(LPARAM) (LPSTR) szBuf);
tbb[0].iBitmap = -1;
tbb[0].idCommand = 0;
tbb[0].fsState = TBSTATE_ENABLED;
tbb[0].fsStyle = TBSTYLE_SEP;
//TBSTYLE_BUTTON;
//TBSTYLE_DROPDOWN;
//BTNS_SEP;
tbb[0].dwData = 0;
tbb[0].iString = -1;
tbb[1].iBitmap = 14;
tbb[1].idCommand = IDS_LIANJIE;
tbb[1].fsState = TBSTATE_ENABLED;
tbb[1].fsStyle =
//TBSTYLE_SEP;
TBSTYLE_BUTTON;
//BTNS_BUTTON;
//TBSTYLE_DROPDOWN;
tbb[1].dwData = 0;
tbb[1].iString = iLianjie;
tbb[2].iBitmap = 4;
tbb[2].idCommand = IDS_ZHUYE;
tbb[2].fsState = TBSTATE_ENABLED;
tbb[2].fsStyle = TBSTYLE_BUTTON;
//TBSTYLE_DROPDOWN;
// BTNS_BUTTON;
tbb[2].dwData = 0;
tbb[2].iString = iZhuye;
tbb[3].iBitmap = 11;
tbb[3].idCommand = IDS_ZHUCE;
tbb[3].fsState = TBSTATE_ENABLED;
tbb[3].fsStyle =
//TBSTYLE_BUTTON;
TBSTYLE_DROPDOWN;
//BTNS_BUTTON;
tbb[3].dwData = 0;
tbb[3].iString = iZhuce;
tbb[4].iBitmap = -1;
tbb[4].idCommand = 0;
tbb[4].fsState = TBSTATE_ENABLED;
tbb[4].fsStyle = TBSTYLE_SEP;
//TBSTYLE_BUTTON;
//TBSTYLE_DROPDOWN;
//BTNS_SEP;
tbb[4].dwData = 0;
tbb[4].iString = -1;
tbb[5].iBitmap = 14;
tbb[5].idCommand = IDS_JIASUO;
tbb[5].fsState = TBSTATE_ENABLED;
tbb[5].fsStyle =TBSTYLE_DROPDOWN;
tbb[5].dwData = 0;
tbb[5].iString = iJiasuo;
tbb[6].iBitmap = 13;
tbb[6].idCommand = IDS_SUOJI;
tbb[6].fsState =
TBSTATE_ENABLED;
//BTNS_SEP;
tbb[6].fsStyle = TBSTYLE_BUTTON;
//TBSTYLE_DROPDOWN;
tbb[6].dwData = 0;
tbb[6].iString = iSuoji;
tbb[7].iBitmap = 9;
tbb[7].idCommand = IDS_SHEZHI;
tbb[7].fsState =
TBSTATE_ENABLED;
//BTNS_SEP;
tbb[7].fsStyle = TBSTYLE_DROPDOWN;
tbb[7].dwData = 0;
tbb[7].iString = iShezhi;
/*
tbb[8].iBitmap = -1;
tbb[8].idCommand = IDS_JIASUO;
tbb[8].fsState = TBSTATE_ENABLED;
tbb[8].fsStyle = TBSTYLE_SEP;
//TBSTYLE_BUTTON;
//TBSTYLE_DROPDOWN;
//BTNS_SEP;
tbb[8].dwData = 0;
tbb[8].iString = -1;*/
SendMessage(hWndToolbar, TB_ADDBUTTONS, (WPARAM) NUM_BUTTONS,
(LPARAM) (LPTBBUTTON) &amt;tbb);
SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);
SendMessage(hWndToolbar,TB_SETEXTENDEDSTYLE, (WPARAM) 0,(LPARAM) (DWORD)TBSTYLE_EX_DRAWDDARROWS );
/*
HWND hWndEdit = CreateWindowEx(0L, "Edit", NULL, WS_CHILD | WS_BORDER
| WS_VISIBLE | ES_LEFT | ES_AUTOVSCROLL | ES_MULTILINE,
480, 0, 70, 45, hWndToolbar,
//(HMENU) IDM_EDIT,
NULL,
hInst, 0 );
*/
SendMessage( // returns LRESULT in lResult
hWndToolbar, // handle to destination control
TB_SETBUTTONSIZE, // message ID
0, // = 0; not used, must be zero
(LPARAM) MAKELONG (62, 55) // = (LPARAM) MAKELONG (dxButton, dyButton)
);
/*
SendMessage( // returns LRESULT in lResult
hWndToolbar, // handle to destination control
TB_SETBITMAPSIZE, // message ID
0, // = 0; not used, must be zero
(LPARAM) MAKELONG (30, 30) // = (LPARAM) MAKELONG (dxBitmap, dyBitmap)
);
*/
ShowWindow(hWndToolbar, SW_SHOW);
return hWndToolbar;
}
BOOL DoNotify(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
#define lpnm ((LPNMHDR)lParam)
#define lpnmTB ((LPNMTOOLBAR)lParam)
#define kk ((int)wParam)
RECT rc;
TPMPARAMS tpm;
HMENU hPopupMenu = NULL;
HMENU hMenuLoaded;
BOOL bRet = FALSE;
switch(lpnm->code)
{
case TBN_DROPDOWN:
{
if (lpnmTB->iItem == IDS_ZHUCE)
{
SendMessage(lpnmTB->hdr.hwndFrom,
//IDS_CUT,
TB_GETRECT,
(WPARAM)lpnmTB->iItem,
(LPARAM)&amt;rc);
MapWindowPoints(lpnmTB->hdr.hwndFrom,
HWND_DESKTOP, (LPPOINT)&amt;rc, 2);
tpm.cbSize = sizeof(TPMPARAMS);
tpm.rcExclude = rc;
hMenuLoaded = LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP));
hPopupMenu = GetSubMenu(LoadMenu(hInst,
MAKEINTRESOURCE(IDR_POPUP)),0);
TrackPopupMenuEx(hPopupMenu,
TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
rc.left, rc.bottom, hwnd, &amt;tpm);
DestroyMenu(hMenuLoaded);
return (FALSE);
}
if (lpnmTB->iItem == IDS_JIASUO)
{
SendMessage(lpnmTB->hdr.hwndFrom,
//IDS_CUT,
TB_GETRECT,
(WPARAM)lpnmTB->iItem,
(LPARAM)&amt;rc);
MapWindowPoints(lpnmTB->hdr.hwndFrom,
HWND_DESKTOP, (LPPOINT)&amt;rc, 2);
tpm.cbSize = sizeof(TPMPARAMS);
tpm.rcExclude = rc;
hMenuLoaded = LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP1));
hPopupMenu = GetSubMenu(LoadMenu(hInst,
MAKEINTRESOURCE(IDR_POPUP1)),0);
TrackPopupMenuEx(hPopupMenu,
TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
rc.left, rc.bottom, hwnd, &amt;tpm);
DestroyMenu(hMenuLoaded);
return (FALSE);
}
if (lpnmTB->iItem == IDS_SHEZHI)
{
SendMessage(lpnmTB->hdr.hwndFrom,
//IDS_CUT,
TB_GETRECT,
(WPARAM)lpnmTB->iItem,
(LPARAM)&amt;rc);
MapWindowPoints(lpnmTB->hdr.hwndFrom,
HWND_DESKTOP, (LPPOINT)&amt;rc, 2);
tpm.cbSize = sizeof(TPMPARAMS);
tpm.rcExclude = rc;
hMenuLoaded = LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP2));
hPopupMenu = GetSubMenu(LoadMenu(hInst,
MAKEINTRESOURCE(IDR_POPUP2)),0);
TrackPopupMenuEx(hPopupMenu,
TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
rc.left, rc.bottom, hwnd, &amt;tpm);
DestroyMenu(hMenuLoaded);
return (FALSE);
}
}
}
return FALSE;
}
void setimagelistcool()
{
HIMAGELIST himlHot; // handle to image list
HBITMAP hBitmapHot; // handle to bitmap
himlHot = ImageList_Create(22,22,ILC_COLOR24 | ILC_MASK,1,256);
hBitmapHot = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_COOL));
// ImageList_Add(himlHot, hBitmapHot, NULL);
ImageList_AddMasked(himlHot, hBitmapHot, RGB (255, 0, 255));
SendMessage(hWndToolbar, TB_SETIMAGELIST, 0, (LPARAM)himlHot);
DeleteObject(hBitmapHot);
}
void setimagelisthot()
{
HIMAGELIST himlHotS; // handle to image list
HBITMAP hBitmapHotS; // handle to bitmap
himlHotS = ImageList_Create(22,22,ILC_COLOR24 | ILC_MASK,1,256);
hBitmapHotS = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_HOT));
//ImageList_Add(himlHotS, hBitmapHotS, NULL);
ImageList_AddMasked (himlHotS, hBitmapHotS, RGB (255, 0, 255));
SendMessage(hWndToolbar, TB_SETHOTIMAGELIST, 0, (LPARAM)himlHotS);
DeleteObject(hBitmapHotS);
}
BOOL setbktoolbar()
{
HDC hdct;
hdct = GetDC(
//GetParent(
hWndToolbar
//)
);
SetBkColor(
hdct, // handle to DC
RGB(215, 215, 215) // background color value
);
return 1;
}