と共通しているコードが多いです。
コピー、カット&ペースト
CMainFrame::OnEditCopy
CMainFrame::OnEditCut
CMainFrame::OnPasteStyle
CMainFrame::InkPaste
CMainFrame::OnPasteAdr
CMainFrame::OnEditPaste
CMainFrame::OnChangeCbChain
CMainFrame::OnDrawClipboard
CadPrim::copyStyle
Text_Editor::Copy
Text_Editor::Cut
Text_Editor::Paste
IInkDisp::ClipboardCopy
CChildView::GetClipData
/* 画像をクリップボードへコピーする */
/* テキストをクリップボードへコピーする */
/* 図形をクリップボードへコピーする(EMF,WMF形式
/* 図形をクリップボードへコピーする(SVG Cats オリジナル
/* インクをクリップボードへコピーする */
/* エディタのテキストをクリップボードへコピーする */
CChildView::GetClipSize
CChildView::Paste
CChildView::PasteFileCopy
CChildView::PasteText
CChildView::PasteAdjust
CChildView::PasteShortcut
CChildView::SetDefaultTarget
CChildView::SetDefaultTarget
CMainFrame::OnEditPaste_sub : エディタ内にテキストを貼り付ける
CChildView::GetClipData
SVGCat_Clip_load
SVGCat_Clip
SVGCat_ClipPrim
SVGCat_ClipPrim_load
SVGCat_Clip 構造体、 SVGCat_ClipPrim 構造体を参照してください。
SVGCat_Clip_load( &clip, data );
SVGCat_ClipPrim_load( &clipPrim, clip.prims );
for ( i = 0; i < clip.nPrim; i++ ) {
; // 処理
SVGCat_ClipPrim_load( &clipPrim, clipPrim.next );
}
関連
クリップボードに格納するデータを作成する
クリップボードを
展開する
展開したデータ
コピー
ペースト
CMainFrame::OnEditPaste_sub( POINT* point )
ショートカットの貼付(V)
ID_PasteShortcut
CMainFrame::OnPasteShortcut
CanPaste ? GetClipTypesに変更
CMainFrame::OnUpdatePasteShortcut
CChildView::Paste
prim->CopyFromSerial( ip + 2 );
CChildView::OnDrop
ChildView.cpp
パスをクリップボード
URLを ID_Label と srcPath から設定、 ID_Label を無しにする
virtual void ChgToShortCut( wchar_t* targetPath );
StrX_sjis2unicode
CChildView::GetClipData
CChildView::GetClipSize( bPageCopy );
SvgCats_ShcutCopy
SVGCat.h
コピーして、キャンバスを
右クリックするとエラー
Paste
Copy
CMainFrame::OnEditCopy
領域かははみ出ていることはなさそう。
targetPath ファイル名を入れないでみる
OnUpdate 系で問題が有るかも
OnUpdate でクリップボードをみているものがあるか?
ペーストボタンを押すと何ともない
左クリックでは何ともない
URLがおかしい
file.svg\
右クリックコピーでなくてもエラー
GlobalLock などを監視
ファイルパスを L"" にするとエラーにならない?
エラーになっても続行できる
HEAP[SVGCats.exe]: HEAP: Free Heap block 185670 modified at 185708 after it was freed
この領域を、メモリウィンドウでチェックせよ
CMainFrame::OnEditPaste_sub
/* ファイルを貼り付ける */
data = GetClipboardData( CF_HDROP );
if ( data != NULL && ! bDone ) {
CMainFrame::CanPaste
/* ビットマップを貼り付ける */
data = GetClipboardData( CF_BITMAP );
if ( data != NULL && ! bDone ) {
2.29へ移植
/* 画像をクリップボードへコピーする */
info.
配列要素数
オフセット
オフセット
オフセット
可変長構造体
可変長配列
固定部・値
固定部・オフセット
可変部
アドレス
アドレス
アドレス
アドレス
対象データのアドレス設定
クリップへコピー
クリップからコピー
(手動)
型構造の記述
オフセット・アドレス変換
関数でアクセス
コピーマスター起動
CChildView::GetClipData
int マウスの位置(キャンバス座標)x,y;
ヘッダ部
サイズは CChildView_ClipHeadSize
char[] ページタイトル (ページコピーなら) ただしサイズは4バイトアライン、'\0'までの可変長
以下は図形ごとに、Zオーダーの奥から順番に格納する。
char 構造体データ[]
0
1
2
3
4
5,6
7
int 全体のデータサイズ
int flags; bit0:ページコピーかどうか
int n=図形の数
int 複数選択の内の代表の図形番号
int ソースの CChildView::m_hWnd
wchar_t[] コピー元のファイル絶対パス、'\0'までの可変長、サイズは1バイトアライン
int データサイズ
int タイプID
×図形の数
int キャンバスサイズ x,y (ページコピーなら)
テストケース
すべての図形のクリップボードをテストします。
テキスト、図形、画像、ライン、まとめ線、インク、ページ
コピー、カット、ペースト
前後関係
パス条件
コピーした内容が同じであること。(自動チェック)
[ 06.12.26 ]
テスト手順
→ テストフォルダ
a.bat を実行します。 (test1.svg, test2.svg が開きます)
・
で開いて
に移動します
・
テストサブ手順1 : 全選択コピー
テストサブ手順2 : ページコピー
テストサブ手順3 : 全選択カット&ペースト
テストサブ手順4 : ページカット&ペースト
・
test1.svg の 1ページ目をすべて選択して、コピーします
・
test2.svg の 1ページ目に、ペーストします
・
アプリケーションを終了します
・
b.bat を実行します。
[ 06.12.26 ]
[ 06.12.26 ]
[ 06.12.26 ]
b2.bat を実行します。
・
アプリケーションを終了します
・
test2.svg の 1ページ目(の前)に、ペーストします
・
test1.svg の 1ページ目をページコピーします
・
・
a.bat を実行します。 (test1.svg, test2.svg が開きます)
[ 06.12.26 ]
b.bat を実行します。
・
アプリケーションを終了します
・
test2.svg の 1ページ目に、ペーストします
・
test1.svg の 1ページ目をすべて選択して、カットします
・
・
a.bat を実行します。 (test1.svg, test2.svg が開きます)
・
・
test1.svg の 1ページ目をページコピーします
・
test2.svg の 1ページ目(の前)に、ペーストします
・
アプリケーションを終了します
・
b2.bat を実行します。
a.bat を実行します。 (test1.svg, test2.svg が開きます)