迷路を生成したら、他のプログラムで使えるようにしたいものです。BorlandのC++Builder 6でしか使えない手法かもしれませんが、以下の様にしてクリップボードへの書き出しが出来ます。
基本的に、Clipboard()->Open()とClipboard()->Close()の間に、クリップボードへ書き出すデータを登録します。図形であればClipboard()->Assign(イメージ)、テキストであればClipboard()->SetTextBuf(テキスト)で登録できます。
void __fastcall TForm1::cut(TObject *Sender)
{
// 複数の項目をクリップボードに追加する処理の開始
Clipboard()->Open();
// METAメタファイル
{
// メタファイルを作る
Graphics::TMetafile *meta = new Graphics::TMetafile();
// メタファイルの大きさを設定する
meta->Width = myMazeWidth;
meta->Height = myMazeHeight;
// メタファイルの Canvas を作る 参照デバイスはスクリーン;
TMetafileCanvas *metac = new TMetafileCanvas(meta, 0);
// メタファイルに描画する
myMazeDraw(metac);
// Canvas を閉じ、図形を確定する
delete metac;
//メタファイルをクリップボードへ送る
Clipboard()->Assign(meta);
delete meta;
}
// ビットマップ
{
// ビットマップを作る
Graphics::TBitmap *bitmap = new Graphics::TBitmap();
// ビットマップの大きさを設定する
bitmap->Width = myMazeWidth;
bitmap->Height = myMazeHeight;
// ビットマップに描画する
myMazeDraw(bitmap->Canvas);
// ビットマップをクリップボードへ送る
Clipboard()->Assign(bitmap);
delete bitmap;
}
//テキスト
{
// 文字列バッファを作る
char *buf = (char *)malloc(textMazeSize);
// 文字列に描画する
myMazeWrite(buf);
// 文字列をクリップボードへ送る
Clipboard()->SetTextBuf(buf);
}
// クリップボードに追加終了
Clipboard()->Close();
}
|