1、将16进制的字符串转换成COLORREF类型的变量
例如:char cColor[6] = {'a','b','3','5','f','f'};我只想到了这种sb方法,有好方法的贴给我,下面给出我的代码:
char ch1[2] ;
char cOsdColor[6] = {'a','b','3','5','f','f'};
ch1[0] = m_decInfo.cOsdColor[0];
ch1[1] = m_decInfo.cOsdColor[1];
long longvar1,longvar2,longvar3;
sscanf(ch1, "%x ",&longvar1);
ch1[0] = m_decInfo.cOsdColor[2];
ch1[1] = m_decInfo.cOsdColor[3];
sscanf(ch1, "%x ",&longvar2);
ch1[0] = m_decInfo.cOsdColor[4];
ch1[1] = m_decInfo.cOsdColor[5];
sscanf(ch1, "%x ",&longvar3);
COLORREF m_RGB = RGB(longvar1,longvar2,longvar3);
2.将COLORREF转化成16进制的字符串
COLORREF m_RGB = 3452212;
BYTE ch[3];
ch[0] = GetRValue(m_RGB);
ch[1] = GetGValue(m_RGB);
ch[2] = GetBValue(m_RGB);
char p1[9];
char p2[6];
char p3[3];
memset(p1,'\0',9);
memset(p2,'\0',6);
memset(p3,'\0',3);
sprintf(p1,"%x",ch[0]);
sprintf(p2,"%x",ch[1]);
sprintf(p3,"%x",ch[2]);
if ( p1[0]== '0')
{
p1[1]='0';
}
if ( p2[0]== '0')
{
p2[1]='0';
}
if ( p3[0]== '0')
{
p3[1]='0';
}
strcat(p1,strcat(p2,p3));
for (int i=0;i!=9;i++)
{
p1[i] = toupper(p1[i]);
}
得到的p1即为16进制的字符串。