HWND tcore::init_toolbar(HINSTANCE hinst, HWND hdlgP) { // Create a toolbar gdmgr._htb_core = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, WS_CHILD | /*CCS_ADJUSTABLE |*/ TBSTYLE_TOOLTIPS | TBSTYLE_FLAT, 0, 0, 0, 0, hdlgP, (HMENU)IDR_WGENMENU, gdmgr._hinst, NULL); //Enable multiple image lists SendMessage(gdmgr._htb_core, CCM_SETVERSION, (WPARAM) 5, 0); // Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility ToolBar_ButtonStructSize(gdmgr._htb_core, sizeof(TBBUTTON)); gdmgr._tbBtns_core[0].iBitmap = MAKELONG(gdmgr._iico_save, 0); gdmgr._tbBtns_core[0].idCommand = IDM_SAVE; gdmgr._tbBtns_core[0].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_core[0].fsStyle = BTNS_BUTTON; gdmgr._tbBtns_core[0].dwData = 0L; gdmgr._tbBtns_core[0].iString = -1; ToolBar_AddButtons(gdmgr._htb_core, 1, &gdmgr._tbBtns_core); ToolBar_AutoSize(gdmgr._htb_core); ToolBar_SetExtendedStyle(gdmgr._htb_core, TBSTYLE_EX_DRAWDDARROWS); ToolBar_SetImageList(gdmgr._htb_core, gdmgr._himl_24x24, 0); ToolBar_SetDisabledImageList(gdmgr._htb_core, gdmgr._himl_24x24_dis); ShowWindow(gdmgr._htb_core, SW_SHOW); return gdmgr._htb_core; }
// ------------------------------------------------------------------------ HWND init_toolbar_sys(HINSTANCE hinst, HWND hdlgP) { int idx = 0; // Create a toolbar gdmgr._htb_sys = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, WS_CHILD | CCS_ADJUSTABLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | TBSTYLE_CHECK, 0, 0, 0, 0, hdlgP, (HMENU)IDR_SYSMENU, gdmgr._hinst, NULL); // Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility ToolBar_ButtonStructSize(gdmgr._htb_sys, sizeof(TBBUTTON)); ToolBar_SetButtonSize(gdmgr._htb_sys, 80, 80); gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_sync, 0); // 为了工具提示作到简单,IDM_FILE_SAVE最好就是字串,它就是String Table中一个值 gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_SYNC; gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; idx ++; gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_wgen, 0); gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_WGEN; gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; idx ++; gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_xchg, 0); gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_CORE; gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; idx ++; gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_play, 0); gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_PLAY; gdmgr._tbBtns_sys[idx].fsState = 0; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; idx ++; gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_update, 0); gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_TBOX; gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; idx ++; gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_about, 0); gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_BUILDER; gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED; gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON; gdmgr._tbBtns_sys[idx].dwData = 0L; gdmgr._tbBtns_sys[idx].iString = 0; ToolBar_AddButtons(gdmgr._htb_sys, TB_BTNS_COUNT_SYS, &gdmgr._tbBtns_sys); ToolBar_AutoSize(gdmgr._htb_sys); ToolBar_SetExtendedStyle(gdmgr._htb_sys, TBSTYLE_EX_DRAWDDARROWS); ToolBar_SetImageList(gdmgr._htb_sys, gdmgr._himl_80x80, 0); ToolBar_SetDisabledImageList(gdmgr._htb_sys, gdmgr._himl_80x80_dis); ShowWindow(gdmgr._htb_sys, SW_SHOW); return gdmgr._htb_sys; }
void create_subcfg_toolbar(HWND hwndP) { TBBUTTON tbBtns[5]; int cxblank; RECT rc; GetClientRect(hwndP, &rc); cxblank = (rc.right - rc.left) - 4 * 24 - 6; if (gdmgr._htb_subcfg) { DestroyWindow(gdmgr._htb_subcfg); } // Create a toolbar gdmgr._htb_subcfg = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, WS_CHILD | CCS_ADJUSTABLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT, 0, 0, 100, 0, hwndP, (HMENU)IDR_WGENMENU, gdmgr._hinst, NULL); // Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility ToolBar_ButtonStructSize(gdmgr._htb_subcfg, sizeof(TBBUTTON)); ToolBar_SetButtonSize(gdmgr._htb_subcfg, 30, 30); tbBtns[0].iBitmap = MAKELONG(gdmgr._iico_reset, 0); tbBtns[0].idCommand = IDM_RESET; tbBtns[0].fsState = TBSTATE_ENABLED; tbBtns[0].fsStyle = BTNS_BUTTON; tbBtns[0].dwData = 0L; tbBtns[0].iString = -1; ToolBar_AddButtons(gdmgr._htb_subcfg, 1, &tbBtns); ToolBar_AutoSize(gdmgr._htb_subcfg); ToolBar_SetExtendedStyle(gdmgr._htb_subcfg, TBSTYLE_EX_DRAWDDARROWS); ToolBar_SetImageList(gdmgr._htb_subcfg, gdmgr._himl_24x24, 0); ShowWindow(gdmgr._htb_subcfg, SW_SHOW); SetParent(GetDlgItem(hwndP, IDOK), gdmgr._htb_subcfg); SetParent(GetDlgItem(hwndP, IDCANCEL), gdmgr._htb_subcfg); TOOLINFO ti; RECT rect; // CREATE A TOOLTIP WINDOW for OK if (gdmgr._tt_ok) { DestroyWindow(gdmgr._tt_ok); } gdmgr._tt_ok = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, GetDlgItem(gdmgr._htb_subcfg, IDOK), NULL, gdmgr._hinst, NULL ); // SetWindowPos(hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); // GET COORDINATES OF THE MAIN CLIENT AREA GetClientRect(GetDlgItem(gdmgr._htb_subcfg, IDOK), &rect); // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_SUBCLASS; ti.hwnd = GetDlgItem(gdmgr._htb_subcfg, IDOK); ti.hinst = gdmgr._hinst; ti.uId = 0; ti.lpszText = "Save and exit"; // ToolTip control will cover the whole window ti.rect.left = rect.left; ti.rect.top = rect.top; ti.rect.right = rect.right; ti.rect.bottom = rect.bottom; // SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW SendMessage(gdmgr._tt_ok, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); // CREATE A TOOLTIP WINDOW for CANCEL if (gdmgr._tt_cancel) { DestroyWindow(gdmgr._tt_cancel); } gdmgr._tt_cancel = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, GetDlgItem(gdmgr._htb_subcfg, IDCANCEL), NULL, gdmgr._hinst, NULL ); // SetWindowPos(hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); // GET COORDINATES OF THE MAIN CLIENT AREA GetClientRect(GetDlgItem(gdmgr._htb_subcfg, IDCANCEL), &rect); // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_SUBCLASS; ti.hwnd = GetDlgItem(gdmgr._htb_subcfg, IDCANCEL); ti.hinst = gdmgr._hinst; ti.uId = 0; ti.lpszText = "Discard and exit"; // ToolTip control will cover the whole window ti.rect.left = rect.left; ti.rect.top = rect.top; ti.rect.right = rect.right; ti.rect.bottom = rect.bottom; // SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW SendMessage(gdmgr._tt_cancel, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); return; }