ところがCF_DIBがくるときは大抵CF_BITMAPも来てるんでCF_BITMAPで事足りるうえに、CF_BITMAPはとくに加工せずにそのまま描画できちゃうから、CF_BITMAPだけでいいんじゃないかと妥協したくなる。
休憩だ……っ!
画像ソフトからコピーを行ったときに、どういうデータでクリップボードにセットされるのか調べてた。
・Microsoft (R) ペイント ver 5.1
CF_BITMAP(2), CF_METAFILEPICT(3), CF_DIB(8), CF_ENHMETAFILE(14), CF_MAX(17)
・プリントスクリーン
CF_BITMAP(2), CF_DIB(8), CF_MAX(17)
・PictBear ver2.0
[背景]CF_BITMAP(2), CF_DIB(8), CF_MAX(17)
[レイヤー]送られてこない
・AzPainter2 ver2.05
[コピー]送られてこない
[他へ出力→クリップボード]CF_BITMAP(2), CF_DIB(8), CF_MAX(17)
・Microsoft (R) Office Excel 2003
[画像データを選択しコピーしたとき]CF_METAFILEPICT(3), CF_ENHMETAFILE(14)
おまけ
・エクスプローラでファイルをコピー
CF_HDROP(15)
・InternetExplorerにて画像を右クリック→コピー
CF_BITMAP(2), CF_DIB(8), CF_HDROP(15), CF_MAX(17)
といったような感じ。
レイヤー関係はクリップボードを使わないみたいだが、だから不便なんだよ。32bitにしてAlphaColorを0にでもすればいいんじゃないかと思わんでもないが、そんな簡単な問題でもないんだろうな。
Officeに関しては、クリップボード関係を調べてたら一例で乗ってたので実験がてら。
ところでCF_MAXってなんじょい?
#if(WINVER >= 0x0500)
#define CF_MAX 18
#elif(WINVER >= 0x0400)
#define CF_MAX 17
#else
#define CF_MAX 15
#endif
とWinUser.hにあり、値がまちまちのようだ。結局なんのパラメータ?
0 件のコメント:
コメントを投稿