LRESULT SSkinImgFrame2::OnAttrSrc(const SStringW & strValue,BOOL bLoading) { int iPos = strValue.Find(L'{'); if(iPos==-1) return E_FAIL; m_strImgKey = strValue.Left(iPos); SStringW strRgn = strValue.Right(strValue.GetLength()-iPos); if(swscanf(strRgn,L"{%d,%d,%d,%d}",&m_rcImg.left,&m_rcImg.top,&m_rcImg.right,&m_rcImg.bottom)!=4) { CPoint pt; CSize sz; if(swscanf(strRgn,L"{%d,%d,@%d,@%d}",&pt.x,&pt.y,&sz.cx,&sz.cy)!=4) return E_FAIL; m_rcImg = CRect(pt,sz); } IMGPOOL::CPair * p = s_imgPool.Lookup(m_strImgKey); if(p) { SSkinImgFrame::SetImage(p->m_value); p->m_value->AddRef(); }else { IBitmap *pImg=LOADIMAGE2(m_strImgKey); if(!pImg) return E_FAIL; s_imgPool[m_strImgKey]=pImg; SSkinImgFrame::SetImage(pImg); } return S_OK; }
void SMenu::InitMenuItemData(SMenuItemInfo & itemInfo, const SStringW & strTextW) { itemInfo.strText=S_CW2T(TR(strTextW,m_menuAttr.m_strTrCtx)); //查找快捷键 int iHotKey = strTextW.Find(L"&"); if(iHotKey != -1 && iHotKey < strTextW.GetLength()-1) { itemInfo.vHotKey = tolower(strTextW[iHotKey+1]); }else { itemInfo.vHotKey = 0; } }