DWORD ColorLerp(DWORD color1,DWORD color2,float fWeight) { if(fWeight<=0.01f) return color1; else if(fWeight>=1) return color2; else { BYTE Weight=(BYTE)(fWeight*255); BYTE IWeight=~Weight; DWORD dwTemp=0; dwTemp =(((0xFF00FF00&color1)>>8)*IWeight+ ((0xFF00FF00&color2)>>8)*Weight )&0xFF00FF00; dwTemp|=(((0x00FF00FF&color1)*IWeight+ (0x00FF00FF&color2)*Weight )&0xFF00FF00)>>8; return dwTemp; } } DWORD strOct(char *str) { int i; DWORD dwTemp=0; for(i=2;str[i]!=0 && i<10;i++) { dwTemp<<=4; dwTemp|=(0x0F & str[i]) + ((str[i]& 0x40)>>6)*9; } return dwTemp; }