void CTextPropertyToolBar::PropertyChanged(TextProperty &property) { switch (property.GetPropertyType()) { case PropertyEnum_TextBold: m_bBold = property.GetValue<bool>(); break; case PropertyEnum_TextItalic: m_bItalic = property.GetValue<bool>(); break; case propertyEnum_TextHighlight: m_bHighlight = property.GetValue<bool>(); break; case PropertyEnum_TextUnderline: m_bUnderline = property.GetValue<bool>(); break; case PropertyEnum_TextStrikeout: m_bStrike = property.GetValue<bool>(); break; /* case PropertyEnum_TextSubscript: property.GetValue(bValue); m_subBtn.SetCheck(bValue ? BST_CHECKED : BST_UNCHECKED); break; case PropertyEnum_TextSuperscript: property.GetValue(bValue); m_supBtn.SetCheck(bValue ? BST_CHECKED : BST_UNCHECKED); break;*/ case PropertyEnum_FontName: { CString name = property.GetValue<CString>(); ((CMFCToolBarComboBoxButton*)this->GetButton(GetButtonIndex(ID_FONTCOMBO_TEXT)))->SelectItem(name); break; } case PropertyEnum_FontSize: { CString size; size.Format(L"%d", property.GetValue<int>()); ((CMFCToolBarComboBoxButton*)this->GetButton(GetButtonIndex(ID_SIZECOMBO_TEXT)))->SelectItem(size); break; } default: break; } this->Invalidate(); }
VOID CSendPage:: OnButtonSend(DWORD dwButtonId) { DWORD dwIndex; Tstring tstrTemp, tstrHexStr; dwIndex = GetButtonIndex(dwButtonId); tstrTemp = GetText(GetDlgItem(SendPage.m_hWnd, SendPage.m_CtrlTable[dwIndex].dwEditBoxId)); if ( tstrTemp != _T("") ) { tstrHexStr = PreProcessPackeTstring(tstrTemp); if (tstrHexStr != _T("")) { LPBYTE lpHexBuf = new BYTE[tstrHexStr.length()]; DWORD dwLen = Utility::StringLib::Tstring2Hex(tstrHexStr.c_str(), lpHexBuf); SetText(GetDlgItem(SendPage.m_hWnd,SendPage.m_CtrlTable[dwIndex].dwEditBoxId), tstrTemp); CGPacket* pPacket = (CGPacket*)GetWindowLongPtr(GetDlgItem(SendPage.m_hWnd,SendPage.m_CtrlTable[dwIndex].dwEditBoxId), GWL_USERDATA); CGPacket* pNewPacket = new CGPacket(lpHexBuf, dwLen, pPacket->GetPacketProperty()); if (pNewPacket) { PluginWrap.SendData( *pNewPacket); delete pNewPacket; } delete[]lpHexBuf; } } }
/** * add runtime toolbar. * * @param [in] pToolbarData: pointer to toolbar data * create pToolbarData with new before calling this function. * it will be stored and deleted within this class so don't * call delete yourself. * @return successful? */ BOOL CCoolMenuManager::AddRuntimeToolbar(CToolbarData* pToolbarData) { CString strBitmapFile; ASSERT(pToolbarData); int iNextImage = m_ilButtons.GetImageCount(); int iNumButtons = pToolbarData->m_ItemIdArray.GetSize(); int iNumButtonFiles = pToolbarData->m_astrBitmapFileName.GetSize(); ASSERT(iNumButtons == iNumButtonFiles); UINT nID; for(int iButton=0; iButton < iNumButtons; ++iButton) { HBITMAP hbmpButton; CBitmap bmButton; strBitmapFile = pToolbarData->m_astrBitmapFileName[iButton]; if(strBitmapFile.IsEmpty()) { continue; } hbmpButton = (HBITMAP)::LoadImage(0, strBitmapFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if(hbmpButton) { bmButton.Attach(hbmpButton); m_ilButtons.Add(&bmButton, pToolbarData->m_bgColor); nID = pToolbarData->m_ItemIdArray[iButton]; if (nID > 0) { if (GetButtonIndex(nID) >= 0) { TRACE(_T("*** Duplicate button ID %d ignored\n"), nID); } else { m_mapIDtoImage.SetAt(nID, (void*)iNextImage++); } } } else { TRACE("AddRuntimeToolbar(): bitmap %s could not be loaded\n", strBitmapFile); } } m_arToolbarID.Add(pToolbarData->m_uiID); // remember toolbar ID for Refresh // store toolbar data m_tToolbarDataList.AddTail(pToolbarData); return TRUE; // success! }
/** * load toolbar from structure. * * @param [in] nIDToolbar: identification number of toolbar (needed for refresh) * @param [in] ptbd: toolbar data * @param [in] hbmpToolbar: handle to loaded bitmap * @return * @exception - * @see */ BOOL CCoolMenuManager::LoadToolbarFromStruct(UINT nIDToolbar, TOOLBARDATA* ptbd, HBITMAP hbmToolbar) { CBitmap bmToolbar; bmToolbar.Attach(hbmToolbar); // destructor will detach & destroy CSize sz(ptbd->wWidth, ptbd->wHeight); if (m_szBitmap.cx==0) { // First toolbar: initialized bitmap/button sizes and create image list. m_szBitmap = sz; m_szButton = sz + CSize(CXBUTTONMARGIN<<1, CYBUTTONMARGIN<<1); VERIFY(m_ilButtons.Create(sz.cx, sz.cy, ILC_MASK, 0, 10)); } else if (m_szBitmap != sz) { // button sizes different -- oops TRACE(_T("*** Toolbar %d button size differs!\n"), nIDToolbar); return FALSE; } // I have a good toolbar: now add bitmap to the image list, and each // command ID to m_mapIDtoImage array. Note that LoadSysColorBitmap will // change gray -> COLOR_3DFACE, so use that for image list background. // int iNextImage = m_ilButtons.GetImageCount(); m_ilButtons.Add(&bmToolbar, GetSysColor(COLOR_3DFACE)); for (int i = 0; i < ptbd->wItemCount; i++) { UINT nID = ptbd->items[i]; if (nID > 0) { if (GetButtonIndex(nID) >= 0) { TRACE(_T("*** Duplicate button ID %d ignored\n"), nID); } else { m_mapIDtoImage.SetAt(nID, (void*)iNextImage++); } } } m_arToolbarID.Add(nIDToolbar); // remember toolbar ID for Refresh return TRUE; // success! }
void CTextPropertyToolBar::OnFontNameChanged() { CMFCToolBarComboBoxButton *pButton = (CMFCToolBarComboBoxButton*)this->GetButton(GetButtonIndex(ID_FONTCOMBO_TEXT)); CString name = pButton->GetItem(pButton->GetCurSel()); m_pObserver->PropertyChanged(TextPropertyBuilder::CreateTextProperty(PropertyEnum_FontName, name)); }
void CTextPropertyToolBar::OnFontSizeChanged() { CMFCToolBarComboBoxButton *pButton = (CMFCToolBarComboBoxButton*)this->GetButton(GetButtonIndex(ID_SIZECOMBO_TEXT)); CString size = pButton->GetItem(pButton->GetCurSel()); m_pObserver->PropertyChanged(TextPropertyBuilder::CreateTextProperty<int>(PropertyEnum_FontSize, std::stoi(size.GetBuffer()))); }
////////////////// // Load one toolbar. Assumes bg color is gray. // // * add toolbar bitmap to image list // * add each button ID to button map // BOOL CCoolMenuManager::LoadToolbar(UINT nIDToolbar) { // load bitmap HBITMAP hbmToolbar = PLLoadSysColorBitmap(nIDToolbar); if (!hbmToolbar) { TRACE(_T("*** Can't load bitmap for toolbar %d!\n"), nIDToolbar); return FALSE; } CBitmap bmToolbar; bmToolbar.Attach(hbmToolbar); // destructor will detach & destroy // load toolbar LPTSTR lpResName = MAKEINTRESOURCE(nIDToolbar); HINSTANCE hInst; HRSRC hRsrc; TOOLBARDATA* ptbd; if ((hInst= AfxFindResourceHandle(lpResName, RT_TOOLBAR)) == NULL || (hRsrc= FindResource(hInst, lpResName, RT_TOOLBAR)) == NULL || (ptbd = (TOOLBARDATA*)LoadResource(hInst, hRsrc)) == NULL) { TRACE(_T("*** Can't load toolbar %d!\n"), nIDToolbar); return FALSE; } ASSERT(ptbd->wVersion==1); // OK, I have the bitmap and toolbar. CSize sz(ptbd->wWidth, ptbd->wHeight); if (m_szBitmap.cx==0) { // First toolbar: initialized bitmap/button sizes and create image list. m_szBitmap = sz; m_szButton = sz + CSize(CXBUTTONMARGIN<<1, CYBUTTONMARGIN<<1); VERIFY(m_ilButtons.Create(sz.cx, sz.cy, ILC_MASK, 0, 10)); } else if (m_szBitmap != sz) { // button sizes different -- oops TRACE(_T("*** Toolbar %d button size differs!\n"), nIDToolbar); return FALSE; } // I have a good toolbar: now add bitmap to the image list, and each // command ID to m_mapIDtoImage array. Note that LoadSysColorBitmap will // change gray -> COLOR_3DFACE, so use that for image list background. // int iNextImage = m_ilButtons.GetImageCount(); m_ilButtons.Add(&bmToolbar, GetSysColor(COLOR_3DFACE)); for (int i = 0; i < ptbd->wItemCount; i++) { UINT nID = ptbd->items[i]; if (nID > 0) { if (GetButtonIndex(nID) >= 0) { TRACE(_T("*** Duplicate button ID %d ignored\n"), nID); } else { m_mapIDtoImage.SetAt(nID, (void*)iNextImage); TRACE(_T("CCoolMenuManager::LoadToolbar(). Added Menu Id %d, Button Number %d\n"), nID, iNextImage-1); } // AB. 13-08-98. Since we've already added the entire toolbar to the imagelist // we need to increment nNextImage even if we didn't add this button to // m_mapIDtoImage. iNextImage++; } } m_arToolbarID.Add(nIDToolbar); // remember toolbar ID for Refresh bmToolbar.Detach(); return TRUE; // success! }