スクリーンショット保存できました

ついに、というか、ようやく正しく保存することが出来ました。(^^;
長かったよう。。え〜ん。え〜ん。


ちなみに、バグの原因としては、ウインドウバッファからグラフィックスデータを吸い出すときに、32ビットデータを吸い出さないと行けないのに、8ビットデータしか吸い出してなかったという。。。orz
てっきり、並び方が間違っているとばかり思っていた私って一体。。(^^;;


今まで、PNGへ保存するときは、8bppか、24bppしか対応してなかったんですね。
今回、32bppも対応する必要性にせまられ、バグが露見したというわけです。(^^;

typedef unsigned char byte;
typedef unsigned long XID;


 ColTyp c;
 byte *P;
 
 int bitpix = surface->format->BitsPerPixel;
 P = (unsigned char *)surface->pixels + (y * surface->pitch +x * bitpix/8 );
 
 switch( bitpix)
 	{
     case 8:  c.ct_byte[0] = *P;
              break;
     case 16: c.ct_byte[0] = *(P+1);
              c.ct_byte[1] = *P;
              break;
     case 24: c.ct_byte[0] = *(P+2);
     	      c.ct_byte[1] = *(P+1);
     	      c.ct_byte[2] = *P;
              break;
     case 32: c.ct_xid     = (XID)*P;
              break;
    }
 return( c );
}


さて、問題です。上記のソースリストの、case 32: の後の式を、正しく直してください。(汗)

正解したら。。。。某ワークステーションを、35万円の適正価格で、買うことのできる権利を差し上げます。:-)