int CCJToolBarCtrl::OnCreate(LPCREATESTRUCT lpcs) { if (CWnd::OnCreate(lpcs) == -1) return -1; SetButtonStructSize(sizeof(TBBUTTON)); return 0; }
HWND Create(HWND hwndParent) { static TBBUTTON Buttons [] = { /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */ { 0, ID_INSTALL, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, (INT_PTR) szInstallBtn }, { 1, ID_UNINSTALL, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, (INT_PTR) szUninstallBtn }, { 2, ID_MODIFY, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, (INT_PTR) szModifyBtn }, { 5, 0, TBSTATE_ENABLED, BTNS_SEP, { 0 }, 0, 0 }, { 3, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 }, { 4, ID_RESETDB, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0}, { 5, 0, TBSTATE_ENABLED, BTNS_SEP, { 0 }, 0, 0 }, { 5, ID_SETTINGS, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 }, { 6, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 } }; INT NumButtons = sizeof(Buttons) / sizeof(Buttons[0]); HIMAGELIST hImageList; LoadStringW(hInst, IDS_INSTALL, szInstallBtn, sizeof(szInstallBtn) / sizeof(WCHAR)); LoadStringW(hInst, IDS_UNINSTALL, szUninstallBtn, sizeof(szUninstallBtn) / sizeof(WCHAR)); LoadStringW(hInst, IDS_MODIFY, szModifyBtn, sizeof(szModifyBtn) / sizeof(WCHAR)); m_hWnd = CreateWindowExW(0, TOOLBARCLASSNAMEW, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | TBSTYLE_LIST, 0, 0, 0, 0, hwndParent, 0, hInst, NULL); if (!m_hWnd) { /* TODO: Show error message */ return FALSE; } SendMessageW(TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS); SetButtonStructSize(); hImageList = InitImageList(); if (!hImageList) { /* TODO: Show error message */ return FALSE; } ImageList_Destroy((HIMAGELIST) SetImageList(hImageList)); AddButtons(NumButtons, Buttons); return m_hWnd; }
BOOL CModControlBar::Init(UINT nId) //--------------------------------- { HINSTANCE hInstance = AfxGetInstanceHandle(); TBADDBITMAP tbab; SetButtonStructSize(sizeof(TBBUTTON)); SetBitmapSize(CSize(16, 15)); SetButtonSize(CSize(27, 24)); // Add bitmaps m_hBarBmp = AfxLoadSysColorBitmap( hInstance, ::FindResource(hInstance, MAKEINTRESOURCE(nId), RT_BITMAP)); tbab.hInst = NULL; tbab.nID = (UINT)m_hBarBmp; ::SendMessage(m_hWnd, TB_ADDBITMAP, 16, (LPARAM)&tbab); UpdateStyle(); return TRUE; }
bool CTransparentBar::Create(CWnd* parent, UINT id) { int height= GetApp()->IsWhistlerLookAvailable() ? 25 : 23; if (!CToolBarCtrl::Create(WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | //TBSTYLE_TRANSPARENT | CCS_NOMOVEY | CCS_NORESIZE | CCS_NOPARENTALIGN | CCS_NODIVIDER, CRect(0,0,80,height), parent, id)) { ASSERT(false); return false; } SendMessage(WM_SETFONT, WPARAM(::GetStockObject(DEFAULT_GUI_FONT))); // Add toolbar buttons // SetButtonStructSize(sizeof(TBBUTTON)); static const int anCommands[]= { ID_PHOTO_PREV, ID_PHOTO_NEXT, SC_CLOSE }; const int COUNT= array_count(anCommands); // no of buttons CSize btn_size; { CBitmap Bmp; Bmp.LoadBitmap(IDB_TRANSPARENT_BAR); BITMAP bmp; Bmp.GetBitmap(&bmp); btn_size = CSize(bmp.bmWidth / COUNT, bmp.bmHeight); // determine single button bitmap size } SetBitmapSize(btn_size); SetButtonSize(btn_size + CSize(8, 7)); AddBitmap(COUNT, IDB_TRANSPARENT_BAR); // RString tb(IDS_MAIN_TOOLBAR); // tb += "\n"; // tb.Replace('\n', '\0'); // int string= AddStrings(tb); CSize padding_size= GetApp()->IsWhistlerLookAvailable() ? CSize(5, 9) : CSize(3, 7); SendMessage(TB_SETPADDING, 0, MAKELONG(padding_size.cx, padding_size.cy)); for (int i= 0; i < COUNT; i++) { TBBUTTON btn; if (anCommands[i] == 0) { btn.iBitmap = 8; btn.idCommand = -1; btn.fsState = TBSTATE_ENABLED; btn.fsStyle = TBSTYLE_SEP; btn.data = 0; btn.iString = 0; AddButtons(1, &btn); } btn.iBitmap = i; btn.idCommand = anCommands[i]; btn.fsState = TBSTATE_ENABLED; btn.fsStyle = TBSTYLE_BUTTON; // | TBSTYLE_AUTOSIZE; // if (anCommands[i] == ID_RECURSIVE || anCommands[i] == ID_EXIF_ONLY) // btn.fsStyle |= TBSTYLE_CHECK; // else if (anCommands[i] == ID_VIEW_DETAILS || anCommands[i] == ID_VIEW_THUMBNAILS) // btn.fsStyle |= TBSTYLE_CHECKGROUP; // if (anCommands[i] == ID_FOLDER_LIST) // btn.fsStyle |= BTNS_WHOLEDROPDOWN; // if (anCommands[i] == ID_BROWSER || anCommands[i] == ID_COMPOSER || anCommands[i] == ID_READ_CAMERA) // btn.fsStyle |= BTNS_DROPDOWN; btn.data = 0; // if (anCommands[i] == ID_BROWSER || anCommands[i] == ID_COMPOSER || // anCommands[i] == ID_READ_CAMERA || anCommands[i] == ID_FOLDER_LIST) // btn.iString = string++; // else btn.iString = -1; AddButtons(1, &btn); } // SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS); return true; }
BOOL CRRECToolbar::Create( CWnd* parent, CRect& rc ) /* ============================================================ Function : CRRECToolbar::Create Description : Creates the toolbar control Access : Public Return : BOOL - "TRUE" if success Parameters : CWnd* parent - Parent editor CRect& rc - Rectangle to place toolbar in. Usage : Called from the parent editor ============================================================*/ { BOOL result = FALSE; HINSTANCE hInstance = AfxFindResourceHandle( MAKEINTRESOURCE( TOOLBAR_CONTROL ), RT_TOOLBAR ); if(!hInstance) return FALSE; HRSRC hRsrc = ::FindResource( hInstance, MAKEINTRESOURCE( TOOLBAR_CONTROL ), RT_TOOLBAR ); if( !hRsrc ) return FALSE; HGLOBAL hGlobal = LoadResource( hInstance, hRsrc ); if (hGlobal == NULL) return FALSE; CToolBarData* pData = ( CToolBarData* ) LockResource( hGlobal ); if (pData == NULL) return FALSE; ASSERT( pData->wVersion == 1 ); TBBUTTON tb, tbSep; memset ( &tb, 0, sizeof( tb ) ); memset ( &tbSep, 0, sizeof( tbSep ) ); result = CToolBarCtrl::Create(WS_VISIBLE|WS_CHILD, rc, parent, TOOLBAR_CONTROL); if( result ) { SetButtonStructSize( sizeof ( tb ) ); CSize sz ( pData->wWidth, pData->wHeight ); SetBitmapSize( sz ); sz.cx += 4; sz.cy += 4; SetButtonSize( sz ); // Loop through adding buttons. tb.fsState = TBSTATE_ENABLED; tb.fsStyle = TBSTYLE_BUTTON; tb.iString = -1; tb.iBitmap = 0; tbSep.iString = -1; tbSep.fsStyle = TBSTYLE_SEP; for( WORD w = 0; w < pData->wItemCount; w++ ) { if ( pData->items()[ w ] == 0 ) AddButtons( 1, &tbSep ); else { tb.idCommand = pData->items()[ w ]; AddButtons( 1, &tb ); tb.iBitmap++; } } HBITMAP hBitmap = (HBITMAP) ::LoadImage( hInstance, MAKEINTRESOURCE( TOOLBAR_CONTROL ), IMAGE_BITMAP, 0,0, LR_LOADMAP3DCOLORS ); if( !hBitmap ) return FALSE; BITMAP bm; memset( &bm, 0, sizeof ( bm ) ); ::GetObject( hBitmap, sizeof ( bm ), &bm ); AddBitmap( bm.bmWidth / pData->wWidth, CBitmap::FromHandle ( hBitmap ) ); UnlockResource( hGlobal ); FreeResource( hGlobal ); ///////////////////////////////////// // Map in combo boxes // CRect rect; TBBUTTONINFO tbi; tbi.cbSize = sizeof( TBBUTTONINFO ); tbi.cx = FONT_COMBO_WIDTH; tbi.dwMask = TBIF_SIZE | 0x80000000; // By index SetButtonInfo( FONT_NAME_POS, &tbi ); GetItemRect( FONT_NAME_POS, &rect ); rect.bottom += COMBO_HEIGHT; // The font name combo if( m_font.Create( WS_CHILD | WS_VSCROLL | WS_VISIBLE | CBS_AUTOHSCROLL | CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS, rect, this, DROPDOWN_FONT ) ) { m_font.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) ); m_font.FillCombo(); tbi.cx = COMBO_WIDTH; SetButtonInfo( FONT_SIZE_POS, &tbi ); GetItemRect( FONT_SIZE_POS, &rect ); rect.bottom += COMBO_HEIGHT; // The font size combo if( m_size.Create( WS_CHILD | WS_VISIBLE | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS, rect, this, DROPDOWN_SIZE ) ) { m_size.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) ); m_size.FillCombo(); CString color; CString defaultText; CString customText; color.LoadString( STRING_COLOR ); defaultText.LoadString( STRING_DEFAULT ); customText.LoadString( STRING_CUSTOM ); tbi.cx = COLOR_WIDTH; SetButtonInfo( FONT_COLOR_POS, &tbi ); GetItemRect( FONT_COLOR_POS, &rect ); // The color picker if( m_color.Create( color, WS_VISIBLE| WS_CHILD, rect, this, BUTTON_COLOR ) ) { m_color.SetDefaultText( defaultText ); m_color.SetCustomText( customText ); m_color.SetSelectionMode( CP_MODE_TEXT ); m_color.SetBkColour( RGB( 255, 255, 255 ) ); m_color.SetFont( CFont::FromHandle( ( HFONT ) ::GetStockObject( ANSI_VAR_FONT ) ) ); result = TRUE; } } } } return result; }
void CNativeToolbar::createToolbar(rho_param *p) { if (!rho_rhodesapp_check_mode() || !rho_wmsys_has_touchscreen() ) return; int bar_type = TOOLBAR_TYPE; m_rgbBackColor = RGB(220,220,220); m_rgbMaskColor = RGB(255,255,255); m_nHeight = MIN_TOOLBAR_HEIGHT; rho_param *params = NULL; switch (p->type) { case RHO_PARAM_ARRAY: params = p; break; case RHO_PARAM_HASH: { for (int i = 0, lim = p->v.hash->size; i < lim; ++i) { const char *name = p->v.hash->name[i]; rho_param *value = p->v.hash->value[i]; if (strcasecmp(name, "background_color") == 0) m_rgbBackColor = getColorFromString(value->v.string); else if (strcasecmp(name, "mask_color") == 0) m_rgbMaskColor = getColorFromString(value->v.string); else if (strcasecmp(name, "view_height") == 0) m_nHeight = atoi(value->v.string); else if (strcasecmp(name, "buttons") == 0 || strcasecmp(name, "tabs") == 0) params = value; } } break; default: { LOG(ERROR) + "Unexpected parameter type for create_nativebar, should be Array or Hash"; return; } } if (!params) { LOG(ERROR) + "Wrong parameters for create_nativebar"; return; } int size = params->v.array->size; if ( size == 0 ) { removeToolbar(); return; } if ( m_hWnd ) { removeAllButtons(); }else { RECT rcToolbar; rcToolbar.left = 0; rcToolbar.right = 0; rcToolbar.top = 0; rcToolbar.bottom = m_nHeight; Create(getAppWindow().m_hWnd, rcToolbar, NULL, WS_CHILD|CCS_NOPARENTALIGN|CCS_NORESIZE|CCS_NOMOVEY|CCS_BOTTOM|CCS_NODIVIDER | TBSTYLE_FLAT |TBSTYLE_LIST|TBSTYLE_TRANSPARENT ); //TBSTYLE_AUTOSIZE SetButtonStructSize(); } for (int i = 0; i < size; ++i) { rho_param *hash = params->v.array->value[i]; if (hash->type != RHO_PARAM_HASH) { LOG(ERROR) + "Unexpected type of array item for create_nativebar, should be Hash"; return; } const char *label = NULL; const char *action = NULL; const char *icon = NULL; const char *colored_icon = NULL; int nItemWidth = 0; for (int j = 0, lim = hash->v.hash->size; j < lim; ++j) { const char *name = hash->v.hash->name[j]; rho_param *value = hash->v.hash->value[j]; if (value->type != RHO_PARAM_STRING) { LOG(ERROR) + "Unexpected '" + name + "' type, should be String"; return; } if (strcasecmp(name, "label") == 0) label = value->v.string; else if (strcasecmp(name, "action") == 0) action = value->v.string; else if (strcasecmp(name, "icon") == 0) icon = value->v.string; else if (strcasecmp(name, "colored_icon") == 0) colored_icon = value->v.string; else if (strcasecmp(name, "width") == 0) nItemWidth = atoi(value->v.string); } if (label == NULL && bar_type == TOOLBAR_TYPE) label = ""; if ( label == NULL || action == NULL) { LOG(ERROR) + "Illegal argument for create_nativebar"; return; } if ( strcasecmp(action, "forward") == 0 && rho_conf_getBool("jqtouch_mode") ) continue; m_arButtons.addElement( new CToolbarBtn(label, action, icon, nItemWidth) ); } CSize sizeMax = getMaxImageSize(); m_nHeight = max(m_nHeight, sizeMax.cy+MIN_TOOLBAR_IDENT); int nBtnSize = m_nHeight-MIN_TOOLBAR_IDENT; SetButtonSize(max(nBtnSize,sizeMax.cx), max(nBtnSize,sizeMax.cy)); SetBitmapSize(sizeMax.cx, sizeMax.cy); m_listImages.Create(sizeMax.cx, sizeMax.cy, ILC_MASK|ILC_COLOR32, m_arButtons.size(), 0); SetImageList(m_listImages); for ( int i = 0; i < (int)m_arButtons.size(); i++ ) addToolbarButton( *m_arButtons.elementAt(i), i ); AutoSize(); alignSeparatorWidth(); ShowWindow(SW_SHOW); #if defined (OS_WINDOWS) RECT rcWnd; getAppWindow().GetWindowRect(&rcWnd); getAppWindow().SetWindowPos( 0, 0,0,rcWnd.right-rcWnd.left-1,rcWnd.bottom-rcWnd.top, SWP_NOMOVE|SWP_NOZORDER|SWP_FRAMECHANGED); getAppWindow().SetWindowPos( 0, 0,0,rcWnd.right-rcWnd.left,rcWnd.bottom-rcWnd.top, SWP_NOMOVE|SWP_NOZORDER|SWP_FRAMECHANGED); #else getAppWindow().SetWindowPos( 0, 0,0,0,0, SWP_NOMOVE|SWP_NOZORDER|SWP_NOSIZE|SWP_FRAMECHANGED); #endif }