GetRValue, GetGValue, GetBValue はフルカラー(24bitカラー or 32bitカラー)
が前提ですので、画面の色ビット深度が16bitカラーの時には16bitカラーの値が
返ってくる GetPixel の戻り値を GetRValue 等の API に渡しても正常な値を
取得することが出来ません。
なので、GetPixel で取得した色値からR,G,Bの値を取得する場合はこちらの
関数をお使いください。
// 画面モードに対応した色値から3原色の値を抜き出す
int GetColor2( int Color, int *Red, int *Green, int *Blue ) ;
ただ、Red,Green,Blue に格納される値は常に 0〜255 の256段階(8bit)ですが、
画面モードが16bitカラーモードの場合は元々 R:0〜31(5bit) G:0〜63(6bit)
B:0〜31(5bit) のビット深度しかないもの無理やり 0〜255 に引き伸ばして
いますので、取得した色を比較処理を行う場合は if( r >= 120 && r <= 128 ) の
ように、少し値に幅を持たせて判断する必要があります。