BOOL RichEditBkImg::ParsePosition34(POSITION_ITEM* pPosItem, const SStringW & strPos3, const SStringW &strPos4 ) { if(strPos3.IsEmpty() || strPos4.IsEmpty()) return FALSE; POSITION_ITEM pos3,pos4; if(!StrPos2ItemPos(strPos3,pos3) || !StrPos2ItemPos(strPos4,pos4) ) return FALSE; pPosItem [PI_RIGHT] = pos3; pPosItem [PI_BOTTOM] = pos4; return TRUE; }
BOOL RichEditBkImg::ParsePosition12(POSITION_ITEM* pPosItem, const SStringW & strPos1, const SStringW &strPos2 ) { if(strPos1.IsEmpty() || strPos2.IsEmpty()) return FALSE; POSITION_ITEM pos1,pos2; if(!StrPos2ItemPos(strPos1,pos1) || !StrPos2ItemPos(strPos2,pos2) ) return FALSE; if(pos1.pit == PIT_SIZE || pos2.pit == PIT_SIZE)//前面2个属性不能是size类型 return FALSE; pPosItem [PI_LEFT] = pos1; pPosItem [PI_TOP] = pos2; return TRUE; }
BOOL RichEditBkImg::StrPos2ItemPos(const SStringW &strPos, POSITION_ITEM & pos) { if(strPos.IsEmpty()) return FALSE; LPCWSTR pszPos = strPos; switch(pszPos[0]) { //case POSFLAG_REFCENTER: pos.pit=PIT_CENTER,pszPos++;break; //case POSFLAG_PERCENT: pos.pit=PIT_PERCENT,pszPos++;break; case POSFLAG_REFPREV_NEAR: pos.pit=PIT_PREV_NEAR,pszPos++;break; case POSFLAG_REFNEXT_NEAR: pos.pit=PIT_NEXT_NEAR,pszPos++;break; case POSFLAG_REFPREV_FAR: pos.pit=PIT_PREV_FAR,pszPos++;break; case POSFLAG_REFNEXT_FAR: pos.pit=PIT_NEXT_FAR,pszPos++;break; case POSFLAG_SIZE:pos.pit=PIT_SIZE,pszPos++;break; default: pos.pit=PIT_NORMAL;break; } pos.nRefID = -1;//not ref sibling using id if(pszPos [0] == L'-') { pos.cMinus = -1; pszPos ++; }else { pos.cMinus = 1; } pos.nPos=(float)_wtof(pszPos); return TRUE; }
void SLayoutSize::parseString(const SStringW & strSize) { if(strSize.IsEmpty()) return; SStringW strUnit = strSize.Right(2); strUnit.MakeLower(); unit = px; for(int i=0; i< ARRAYSIZE(s_pszUnit);i++) { if(strUnit.Compare(s_pszUnit[i]) == 0) { unit = (Unit)i; break; } } fSize = (float)_wtof(strSize); }
COLORREF Hex2Color(const SStringW & strColor,COLORREF crDef) { if(strColor.IsEmpty()) return crDef; return GETCOLOR(strColor); }