void CGifAnimUI::InitGifImage() { m_pGifImage = CRenderEngine::GdiplusLoadImage(GetBkImage()); if ( NULL == m_pGifImage ) return; UINT nCount = 0; nCount = m_pGifImage->GetFrameDimensionsCount(); GUID* pDimensionIDs = new GUID[ nCount ]; m_pGifImage->GetFrameDimensionsList( pDimensionIDs, nCount ); m_nFrameCount = m_pGifImage->GetFrameCount( &pDimensionIDs[0] ); if (m_nFrameCount > 1) { int nSize = m_pGifImage->GetPropertyItemSize(PropertyTagFrameDelay); m_pPropertyItem = (Gdiplus::PropertyItem*) malloc(nSize); m_pGifImage->GetPropertyItem(PropertyTagFrameDelay, nSize, m_pPropertyItem); } delete[] pDimensionIDs; pDimensionIDs = NULL; if (m_bIsAutoSize) { SetFixedWidth(m_pGifImage->GetWidth()); SetFixedHeight(m_pGifImage->GetHeight()); } if (m_bIsAutoPlay) { PlayGif(); } }
void CControlUI::SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue) { if( _tcscmp(pstrName, _T("id")) == 0 ) SetID(_ttoi(pstrValue)); else if(_tcscmp(pstrName,_T("font")) == 0) SetFont(_ttoi(pstrValue)); else if(_tcscmp(pstrName, _T("name")) == 0) SetName(pstrValue); else if( _tcscmp(pstrName, _T("width")) == 0 ) SetFixedWidth(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("height")) == 0 ) SetFixedHeight(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("minwidth")) == 0 ) SetMinWidth(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("minheight")) == 0 ) SetMinHeight(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("maxwidth")) == 0 ) SetMaxWidth(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("maxheight")) == 0 ) SetMaxHeight(_ttoi(pstrValue)); else if( _tcscmp(pstrName, _T("inset")) == 0) { RECT rcInset = { 0 }; LPTSTR pstr = NULL; rcInset.left = _tcstol(pstrValue, &pstr, 10); rcInset.top = _tcstol(pstr + 1, &pstr, 10); rcInset.right = _tcstol(pstr + 1, &pstr, 10); rcInset.bottom = _tcstol(pstr + 1, &pstr, 10); SetInset(rcInset); } else if(_tcscmp(pstrName, _T("visible")) == 0){ bool bVisible = _tcscmp(pstrValue, _T("true"))==0; SetVisible(bVisible); } else if(_tcscmp(pstrName, _T("display")) == 0) SetDisplayed(_tcscmp(pstrValue, _T("true"))==0); else{ #ifdef _DEBUG MessageBox(NULL, pstrValue, pstrName, MB_ICONEXCLAMATION); #endif } }
bool CBitmapControl::Refresh(Window* wnd, bool captrue, bool mirror) { int item_w = m_rcItem.right - m_rcItem.left; int item_h = m_rcItem.bottom - m_rcItem.top; if (auto_size_) { item_w = GetMaxWidth(); item_h = GetMaxHeight(); } bool ret = false; if (item_w > 0 && item_h > 0) { parent_wnd_ = wnd; data_.resize(item_w * item_h * 4); ret = video_frame_mng_->GetVideoFrame((captrue ? "" : account_), timestamp_, (char*)data_.c_str(), item_w, item_h, mirror); if (ret) { width_ = item_w; height_ = item_h; if (auto_size_) { SetFixedWidth(width_); SetFixedHeight(height_); } Invalidate(); } } return ret; }
CPageUI::CPageUI() { SetFixedHeight(20); SetFixedWidth(186); m_nGoPage = 0; m_nCurPage = 0; m_nTotalPage = 0; m_pEditGoPage = new CEditUI; m_pEditGoPage->SetFixedWidth(40); m_pEditGoPage->SetAttribute(_T("textpadding"), _T("2,1,2,1")); m_pEditGoPage->SetAttribute(_T("bordersize"), _T("1")); m_pEditGoPage->SetAttribute(_T("bordercolor"), _T("#FFBFBFBF")); m_pEditGoPage->SetAttribute(_T("textcolor"), _T("#ff333333")); m_pEditGoPage->SetAttribute(_T("tipvalue"), _T("转至...")); m_pEditGoPage->SetAttribute(_T("tipvaluecolor"), _T("#ff888888")); m_pEditGoPage->OnNotify += MakeDelegate(this, &CPageUI::OnEditGoPageEnter); m_pBtnGoPage = new CButtonUI; m_pBtnGoPage->SetFixedWidth(20); m_pBtnGoPage->SetText(_T("go")); m_pBtnGoPage->SetAttribute(_T("textpadding"), _T("2,0,2,1")); m_pBtnGoPage->SetAttribute(_T("bordersize"), _T("1")); m_pBtnGoPage->SetAttribute(_T("bordercolor"), _T("#FFBFBFBF")); m_pBtnGoPage->SetTextColor(0xff333333); m_pBtnGoPage->SetHotTextColor(0xff0099cc); m_pBtnGoPage->OnNotify += MakeDelegate(this, &CPageUI::OnBtnGoPageClick); m_pBtnLeftPage = new CButtonUI; m_pBtnLeftPage->SetFixedWidth(16); m_pBtnLeftPage->SetAttribute(_T("padding"), _T("10,2,0,2")); m_pBtnLeftPage->OnNotify += MakeDelegate(this, &CPageUI::OnBtnLeftPageClick); m_pLabCurPage = new CLabelUI; //m_pLabCurPage->SetFixedWidth(16); m_pLabCurPage->SetAutoCalcWidth(true); m_pLabCurPage->SetTextColor(0xff333333); m_pBtnRightPage = new CButtonUI; m_pBtnRightPage->SetFixedWidth(16); m_pBtnRightPage->SetAttribute(_T("padding"), _T("0,2,0,2")); m_pBtnRightPage->OnNotify += MakeDelegate(this, &CPageUI::OnBtnRightPageClick); m_pBtnRefresh = new CButtonUI; m_pBtnRefresh->SetFixedWidth(16); m_pBtnRefresh->SetEnabled(false); m_pBtnRefresh->SetToolTip("刷新当前页"); m_pBtnRefresh->SetAttribute(_T("padding"), _T("4,2,0,2")); m_pBtnRefresh->OnNotify += MakeDelegate(this, &CPageUI::OnBtnRefreshClick); Add(m_pEditGoPage); Add(m_pBtnGoPage); Add(m_pBtnLeftPage); Add(m_pLabCurPage); Add(m_pBtnRightPage); Add(m_pBtnRefresh); SetTotalPage(m_nTotalPage); SetCurPage(m_nCurPage); }
void FormWindow::Init(const FormDef& def) { if (def.GetRect().w > 0 && def.GetRect().h > 0) { // if form size is specified in def, and it is // smaller than the current screen size, // center the form on the display: Rect r = def.GetRect(); if (r.w < screen->Width()) { r.x = (screen->Width() - r.w) / 2; } else { r.x = 0; r.w = screen->Width(); } if (r.h < screen->Height()) { r.y = (screen->Height() - r.h) / 2; } else { r.y = 0; r.h = screen->Height(); } MoveTo(r); } SetMargins(def.GetMargins()); SetTextInsets(def.GetTextInsets()); SetCellInsets(def.GetCellInsets()); SetCells(def.GetCells()); SetFixedWidth(def.GetFixedWidth()); SetFixedHeight(def.GetFixedHeight()); UseLayout(def.GetLayout().x_mins, def.GetLayout().y_mins, def.GetLayout().x_weights, def.GetLayout().y_weights); if (def.GetTexture().length() > 0) { DataLoader* loader = DataLoader::GetLoader(); loader->SetDataPath("Screens/"); loader->LoadTexture(def.GetTexture(), texture); loader->SetDataPath(""); } SetBackColor(def.GetBackColor()); SetForeColor(def.GetForeColor()); Font* f = FontMgr::Find(def.GetFont()); if (f) SetFont(f); SetTransparent(def.GetTransparent()); ListIter<CtrlDef> ctrl = def.GetControls(); while (++ctrl) { switch (ctrl->GetType()) { case WIN_DEF_FORM: case WIN_DEF_LABEL: default: CreateDefLabel(*ctrl); break; case WIN_DEF_BUTTON: CreateDefButton(*ctrl); break; case WIN_DEF_COMBO: CreateDefCombo(*ctrl); break; case WIN_DEF_IMAGE: CreateDefImage(*ctrl); break; case WIN_DEF_EDIT: CreateDefEdit(*ctrl); break; case WIN_DEF_LIST: CreateDefList(*ctrl); break; case WIN_DEF_SLIDER: CreateDefSlider(*ctrl); break; case WIN_DEF_RICH: CreateDefRichText(*ctrl); break; } } RegisterControls(); DoLayout(); CalcGrid(); }
void FlexGrid::SetFixedSize(double w, double h) { SetFixedWidth(w); SetFixedHeight(h); }
void CControlUI::SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue) { // ÊÇ·ñÑùʽ±í if(m_pManager != NULL) { LPCTSTR pStyle = m_pManager->GetStyle(pstrValue); if( pStyle != NULL) { ApplyAttributeList(pStyle); return; } } if( _tcsicmp(pstrName, _T("pos")) == 0 ) { RECT rcPos = { 0 }; LPTSTR pstr = NULL; rcPos.left = _tcstol(pstrValue, &pstr, 10); ASSERT(pstr); rcPos.top = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPos.right = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPos.bottom = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); SIZE szXY = {rcPos.left >= 0 ? rcPos.left : rcPos.right, rcPos.top >= 0 ? rcPos.top : rcPos.bottom}; SetFixedXY(szXY); SetFixedWidth(rcPos.right - rcPos.left); SetFixedHeight(rcPos.bottom - rcPos.top); } else if( _tcsicmp(pstrName, _T("float")) == 0 ) { CDuiString nValue = pstrValue; // ¶¯Ì¬¼ÆËãÏà¶Ô±ÈÀý if(nValue.Find(',') < 0) { SetFloat(_tcsicmp(pstrValue, _T("true")) == 0); } else { TPercentInfo piFloatPercent = { 0 }; LPTSTR pstr = NULL; piFloatPercent.left = _tcstod(pstrValue, &pstr); ASSERT(pstr); piFloatPercent.top = _tcstod(pstr + 1, &pstr); ASSERT(pstr); piFloatPercent.right = _tcstod(pstr + 1, &pstr); ASSERT(pstr); piFloatPercent.bottom = _tcstod(pstr + 1, &pstr); ASSERT(pstr); SetFloatPercent(piFloatPercent); SetFloat(true); } } else if( _tcsicmp(pstrName, _T("padding")) == 0 ) { RECT rcPadding = { 0 }; LPTSTR pstr = NULL; rcPadding.left = _tcstol(pstrValue, &pstr, 10); ASSERT(pstr); rcPadding.top = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPadding.right = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPadding.bottom = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); SetPadding(rcPadding); } else if( _tcsicmp(pstrName, _T("bkcolor")) == 0 || _tcsicmp(pstrName, _T("bkcolor1")) == 0 ) { while( *pstrValue > _T('\0') && *pstrValue <= _T(' ') ) pstrValue = ::CharNext(pstrValue); if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetBkColor(clrColor); } else if( _tcsicmp(pstrName, _T("bkcolor2")) == 0 ) { while( *pstrValue > _T('\0') && *pstrValue <= _T(' ') ) pstrValue = ::CharNext(pstrValue); if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetBkColor2(clrColor); } else if( _tcsicmp(pstrName, _T("bkcolor3")) == 0 ) { while( *pstrValue > _T('\0') && *pstrValue <= _T(' ') ) pstrValue = ::CharNext(pstrValue); if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetBkColor3(clrColor); } else if( _tcsicmp(pstrName, _T("forecolor")) == 0 ) { while( *pstrValue > _T('\0') && *pstrValue <= _T(' ') ) pstrValue = ::CharNext(pstrValue); if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetForeColor(clrColor); } else if( _tcsicmp(pstrName, _T("bordercolor")) == 0 ) { if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetBorderColor(clrColor); } else if( _tcsicmp(pstrName, _T("focusbordercolor")) == 0 ) { if( *pstrValue == _T('#')) pstrValue = ::CharNext(pstrValue); LPTSTR pstr = NULL; DWORD clrColor = _tcstoul(pstrValue, &pstr, 16); SetFocusBorderColor(clrColor); } else if( _tcsicmp(pstrName, _T("colorhsl")) == 0 ) SetColorHSL(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("bordersize")) == 0 ) { CDuiString nValue = pstrValue; if(nValue.Find(',') < 0) { SetBorderSize(_ttoi(pstrValue)); RECT rcPadding = {0}; SetBorderSize(rcPadding); } else { RECT rcPadding = { 0 }; LPTSTR pstr = NULL; rcPadding.left = _tcstol(pstrValue, &pstr, 10); ASSERT(pstr); rcPadding.top = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPadding.right = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); rcPadding.bottom = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); SetBorderSize(rcPadding); } } else if( _tcsicmp(pstrName, _T("leftbordersize")) == 0 ) SetLeftBorderSize(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("topbordersize")) == 0 ) SetTopBorderSize(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("rightbordersize")) == 0 ) SetRightBorderSize(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("bottombordersize")) == 0 ) SetBottomBorderSize(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("borderstyle")) == 0 ) SetBorderStyle(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("borderround")) == 0 ) { SIZE cxyRound = { 0 }; LPTSTR pstr = NULL; cxyRound.cx = _tcstol(pstrValue, &pstr, 10); ASSERT(pstr); cxyRound.cy = _tcstol(pstr + 1, &pstr, 10); ASSERT(pstr); SetBorderRound(cxyRound); } else if( _tcsicmp(pstrName, _T("bkimage")) == 0 ) SetBkImage(pstrValue); else if( _tcsicmp(pstrName, _T("foreimage")) == 0 ) SetForeImage(pstrValue); else if( _tcsicmp(pstrName, _T("width")) == 0 ) SetFixedWidth(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("height")) == 0 ) SetFixedHeight(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("minwidth")) == 0 ) SetMinWidth(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("minheight")) == 0 ) SetMinHeight(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("maxwidth")) == 0 ) SetMaxWidth(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("maxheight")) == 0 ) SetMaxHeight(_ttoi(pstrValue)); else if( _tcsicmp(pstrName, _T("name")) == 0 ) SetName(pstrValue); else if( _tcsicmp(pstrName, _T("drag")) == 0 ) SetDragEnable(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("drop")) == 0 ) SetDropEnable(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("resourcetext")) == 0 ) SetResourceText(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("text")) == 0 ) SetText(pstrValue); else if( _tcsicmp(pstrName, _T("tooltip")) == 0 ) SetToolTip(pstrValue); else if( _tcsicmp(pstrName, _T("userdata")) == 0 ) SetUserData(pstrValue); else if( _tcsicmp(pstrName, _T("enabled")) == 0 ) SetEnabled(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("mouse")) == 0 ) SetMouseEnabled(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("keyboard")) == 0 ) SetKeyboardEnabled(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("visible")) == 0 ) SetVisible(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("float")) == 0 ) SetFloat(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("shortcut")) == 0 ) SetShortcut(pstrValue[0]); else if( _tcsicmp(pstrName, _T("menu")) == 0 ) SetContextMenuUsed(_tcsicmp(pstrValue, _T("true")) == 0); else if( _tcsicmp(pstrName, _T("cursor")) == 0 && pstrValue) { if( _tcsicmp(pstrValue, _T("arrow")) == 0 ) SetCursor(DUI_ARROW); else if( _tcsicmp(pstrValue, _T("ibeam")) == 0 ) SetCursor(DUI_IBEAM); else if( _tcsicmp(pstrValue, _T("wait")) == 0 ) SetCursor(DUI_WAIT); else if( _tcsicmp(pstrValue, _T("cross")) == 0 ) SetCursor(DUI_CROSS); else if( _tcsicmp(pstrValue, _T("uparrow")) == 0 ) SetCursor(DUI_UPARROW); else if( _tcsicmp(pstrValue, _T("size")) == 0 ) SetCursor(DUI_SIZE); else if( _tcsicmp(pstrValue, _T("icon")) == 0 ) SetCursor(DUI_ICON); else if( _tcsicmp(pstrValue, _T("sizenwse")) == 0 ) SetCursor(DUI_SIZENWSE); else if( _tcsicmp(pstrValue, _T("sizenesw")) == 0 ) SetCursor(DUI_SIZENESW); else if( _tcsicmp(pstrValue, _T("sizewe")) == 0 ) SetCursor(DUI_SIZEWE); else if( _tcsicmp(pstrValue, _T("sizens")) == 0 ) SetCursor(DUI_SIZENS); else if( _tcsicmp(pstrValue, _T("sizeall")) == 0 ) SetCursor(DUI_SIZEALL); else if( _tcsicmp(pstrValue, _T("no")) == 0 ) SetCursor(DUI_NO); else if( _tcsicmp(pstrValue, _T("hand")) == 0 ) SetCursor(DUI_HAND); } else if( _tcsicmp(pstrName, _T("virtualwnd")) == 0 ) SetVirtualWnd(pstrValue); else if( _tcsicmp(pstrName, _T("innerstyle")) == 0 ) { CDuiString sXmlData = pstrValue; sXmlData.Replace(_T("""), _T("\"")); LPCTSTR pstrList = sXmlData.GetData(); CDuiString sItem; CDuiString sValue; while( *pstrList != _T('\0') ) { sItem.Empty(); sValue.Empty(); while( *pstrList != _T('\0') && *pstrList != _T('=') ) { LPTSTR pstrTemp = ::CharNext(pstrList); while( pstrList < pstrTemp) { sItem += *pstrList++; } } ASSERT( *pstrList == _T('=') ); if( *pstrList++ != _T('=') ) return; ASSERT( *pstrList == _T('\"') ); if( *pstrList++ != _T('\"') ) return; while( *pstrList != _T('\0') && *pstrList != _T('\"') ) { LPTSTR pstrTemp = ::CharNext(pstrList); while( pstrList < pstrTemp) { sValue += *pstrList++; } } ASSERT( *pstrList == _T('\"') ); if( *pstrList++ != _T('\"') ) return; SetAttribute(sItem, sValue); if( *pstrList++ != _T(' ') && *pstrList++ != _T(',') ) return; } } }