2011-09-09 60 views
0

如何將COLORREF中的值轉換爲常量字符。目前我嘗試按原樣使用該變量,但從編譯器中得到以下錯誤。將COLORREF轉換爲常量字符

錯誤106錯誤C2664: 'HC_Set_Color':不能從 'COLORREF' 轉換參數1至 '爲const char *' C:\ b_gdm_src_wtx \ gdm_pda \ SRC \ gdmsmallsampledlg3d.cpp 2289

感謝。

+4

你有沒有考慮,編譯器抱怨因爲COLORREF根本就不是一個常量字符,你不能把它當作一個字符嗎? –

+0

你想如何表示字符串? –

+0

'COLORREF'是'DWORD'的typedef,最常用的是'unsigned long'的typedef。即使你使用了正確的強制轉換,將其表示爲「const char *」也沒有什麼意義。 – AJG85

回答

2

你可以把一個並返回一個像這樣的字符串表示:

void COLORREF2string(COLORREF cr, char* buffer) { 
    itoa(GetRValue(cr), buffer, 10); 

    buffer += strlen(buffer); 
    *buffer = ' '; 
    itoa(GetBValue(cr), buffer + 1, 10); 

    buffer += strlen(buffer); 
    *buffer = ' '; 
    itoa(GetGValue(cr), buffer + 1, 10); 
} 

然後使用它是這樣的:

COLORREF c = RGB(34, 54, 12); 

char buf[16]; // 16 is big enough to hold any possible RGB combination 
       // with spaces between the numbers 

COLORREF2string(c, buf); 

cout << buf << endl; 

,它將打印

34 54 12 

你可以把它一個像R: x B: x G: x你自己如果你想要的,但記得要調整緩衝區的大小因此。

1

假設這是你要遵循規範:設置 _color.html#g406b806a5ed60dd9950fb12b0ce2077c

set_color.html#g406b806a5ed60dd9950fb12b0ce2077c「> http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_

你需要形式的字符串「(R = 0.5,G =圖1b = 0)」這是得到它的一種方式。

COLORREF color = RGB(128,255,0); 
stringstream ss; 
ss << "(r=" << GetRValue(color)/255.0 << " g=" << GetGValue(color)/255.0 << " b=" << GetBValue(color)/255.0) << ")"; 
HC_Set_Color(ss.str());