閉じたときのウィンドウの位置は、記憶しています。
プロファイルの window.ini に書かれています。
関連
window.ini
→ ビューアモード、ノードバー
→ ウィンドウの生成破壊
CSVGCatApp::SaveWindowPos
ファイルパス
CSVGCatApp::LoadWindowPos
CMainFrame::InitWindowPos
開く前に移動しておく
CMainFrame::OnClose2
CMainFrame::SaveWindowPos
CMainFrame::OpenSub
ウィンドウモード(0=通常, 1=ビューアモード)
ウィンドウ位置(left,top,right,bottom)(*1)
プロパティ位置(x,y)
プロパティの表示/非表示
プロパティのフロート
プロパティのウィンドウスタイル(CControlBar::GetBarStyle)
CMainFrame::PreCreateWindow
CSVGCatApp::OpenSub
位置を保存するとき:
位置を再現するとき:
ツリー幅 CMainFrame::m_SplitX
ツリーモード CMainFrame::m_SplitMode : 0=ノーマル(m_SplitX), 1=最小, 2=最大
CMainFrame::LoadFrame
CMainFrame::PreNoticePath
m_path
m_bInitSizePosted
typedef struct tagCREATESTRUCT {
LPVOID lpCreateParams;
HANDLE hInstance;
HMENU hMenu;
HWND hwndParent;
int cy;
int cx;
int y;
int x;
LONG style;
LPCSTR lpszName;
LPCSTR lpszClass;
DWORD dwExStyle;
} CREATESTRUCT;
(*1)
ビューアモードのときは、ビューアモードでの位置が記録されます。
テストケース
閉じて、開いたときに、閉じたときのビューアモードになっていることを確認します。
もしくは、ビューアモードを指定します。
SvgCats_WindowTest を 1 にして、ビルドします。
パス条件
ビューアモードか、非ビューアモードを確認します。
閉じる前と、開いた後の位置を記録して、同じことを確認します。
プロパティバーの表示状態も復元されることを確認します。
not_pass
テスト手順
→ テストフォルダ
page=single なら、a.bat を実行します。 (a.svg が開きます)
ビューアモードなら、ビューアモードでなくします。
・
・
・
・
で開いて
に移動します
・
chk1.bat を実行します。 (ウィンドウ位置の記録が pos1.txt へ抽出されます)
メニュー [ Test | PropBar ] と、[ Test | WindowPos ] を選びます。
・
page=single なら、ツリーとプロパティバーを非表示にします
・
・
エクスプローラで、下記のバッチファイルをダブルクリックします。
・
view=not で、
・
ビューアモードなら、ビューアモードをやめます。
・
・
メニュー [ Test | PropBar ] と、[ Test | WindowPos ] を選びます。
chk2.bat を実行して Pass と表示されることを確認します。
(ウィンドウの位置などをチェックします)
・
・
アプリケーションを終了します。
・
・
すべてのテストが終わったら、clean.bat を実行します。
・
各条件のすべての組み合わせをテストします。
(表の横に進めていくのではなく、条件がすべて異なるものを優先して実施します)
ini≠not なら、
ini=not なら、
ini=not なら、window.ini を削除します。
を実施します。
を実施します。
を実施します。
check
check
check
page=single なら、ツリーとプロパティバーが非表示であることを確認します
page=single なら、e.bat (-view オプションで、a.svg が開きます)
view=on で、
page=single なら、d.bat (-view- オプションで、a.svg が開きます)
view=off で、
・
を実施します。
・
・
エクスプローラで、下記のバッチファイルをダブルクリックします。
window.ini を削除します。
・
page=single なら、a.bat (a.svg が開きます)
・
open=show なら、ウィンドウを閉じます。(アプリケーションは終了しません)
・
ini=on なら、ビューアモードにします。
を実施します。
・
・
を実施します。
・
アプリケーションを終了します。
・
page=single なら、ツリーが表示されていないことを確認します
check
view=not で、
page=single なら、a.bat (オプションなしで、a.svg が開きます)
view=on なら、ビューアモード
ini=on なら、ビューアモード
ビューアモードか、非ビューアモードを確認します。
・オプションなしで開くとき (view=not)
・ビューアモードを指定して(-viewオプションで)開くとき (view=on)
・非ビューアモードを指定して(-view-オプションで)開くとき (view=off)
条件:開き方
条件:SVG ファイルのページ数
・単一ページ、またはツリーなし記録 (page=single)
・複数ページ、またはツリーあり記録 (page=multi)
条件:キャッシュの利用、履歴(window.ini)
・非表示ウィンドウキャッシュから開くとき (open=show)
・再利用ウィンドウキャッシュから開くとき (open=reuse)
・アプリケーション起動時に開くとき (open=exe)
条件:記録(window.ini)、(open≠show のとき)
・記録なし (ini=not)
・記録あり、ビューアモード (ini=on)
・記録あり、非ビューアモード (ini=off)
open→
show
reuse
exe
ini→
not
on
off
off
on
not
single
multi
multi
single
page↓
view↓
not
on
off
multi
single
not_pass
not_pass
not_pass
[ 07.01.07 ]
not_pass
not_pass
not_pass
not_pass
not_pass
[ 07.01.07 ]
not_pass
not_pass
not_pass
not_pass
not_pass
[ 07.01.07 ]
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
[ 07.01.07 ]
[ 07.01.07 ]
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
[ 07.01.07 ]
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
not_pass
****
open=, ini=, view=, page=
not_pass
not_pass
not_pass
not_pass
****
not_pass
off
on
page=multi なら、ツリーが表示されていることを確認します
page=multi なら、aa.bat を実行します。 (aa.svg が開きます)
page=multi なら、ツリーとプロパティバーを表示します
open=exe なら、アプリケーションを終了します。
open=reuse なら、アプリケーションを終了します。
page=multi なら、aa.bat (aa.svg が開きます)
page=multi なら、aa.bat (オプションなしで、aa.svg が開きます)
page=multi なら、ee.bat (-view オプションで、aa.svg が開きます)
page=multi なら、dd.bat (-view- オプションで、aa.svg が開きます)
ini≠on なら、非ビューアモード
view=off なら、非ビューアモード
page=multi なら、 ツリーとプロパティバーが表示であることを確認します
ini≠not で、
ini=not で、
page=multi なら、 ツリーが表示、プロパティバーが非表示であることを確認します
page=single なら、ツリーとプロパティバーが非表示であることを確認します
open=reuse なら、n.bat を実行します(起動だけ)
・
テストフォルダ
ビューアモードかどうかが保存されているかどうかテストします。
で、env.bat を編集して、テスト環境をあわせてください。
1.
1.
v指定なし.bat
で開いて、ビューアモードなら、ビューアモードでなくしてください。閉じる。
2.
v指定なし.bat
で開いて、ビューアモードで『ない』ことをチェック。閉じる。
vオン.bat
で開いて、ビューアモードで『ある』ことをチェック。閉じる。
3.
7.
で開いて、ビューアモードで『ない』ことをチェック。閉じる。
vオフ.bat
で開いて、ビューアモードで『ない』ことをチェック。
4.
v指定なし.bat
5.
ビューアモードにしてください。閉じる。
6.
v指定なし.bat
で開いて、ビューアモードで『ある』ことをチェック。閉じる。
で開いて、ビューアモードで『ある』ことをチェック。
v指定なし.bat
ビューアモードでなくしてください。閉じる。
2.
3.
SVG Cats を終了させて、テストセットA を行ってください。
SVG Cats が起動した状態(どんな状態でも良い)で、テストセットA を行ってください。
テストセットA
対象ソース
CMainFrame::m_OrgViewMode
CSVGCatApp::OpenSub
CMainFrame::OpenSub
CMainFrame::SaveWindowPos
m_wndSplitter.GetColumnInfo( 0, app->m_SplitX, min );
m_wndSplitter.SetColumnInfo( 0, 0, 0 );
/* 同じウィンドウで SVG ファイルを開く */
PreNoticePath( openPath );
InitWindowPos( cs );
// ShowWindow( SW_HIDE ); // 遅い
Invalidate( TRUE ); /* リンク前の画面がリンク先の位置で表示しないように */
MoveWindow( cs.x, cs.y, cs.cx, cs.cy );
if ( m_SplitMode == 1 ) NoTree();
else {
m_wndSplitter.SetColumnInfo( 0, m_SplitX, 0 );
m_wndSplitter.RecalcLayout();
}
CMainFrame::OpenSub
m_wndSplitter.SetColumnInfo( 0, m_SplitX, 0 );
m_wndSplitter.RecalcLayout();
if ( m_SplitMode == 1 ) { NoTree(); }
CMainFrame::OnCreateClient
CMainFrame::CMainFrame
m_SplitX = 120; m_SplitMode = 1; /* NoTree, もし On にしたら 120 */
CMainFrame::PreCreateWindow - CMainFrame::InitWindowPos
/* m_SplitX, m_SplitMode の反映は、OnCreateClient で行います */
スプリッターの位置の復帰
スプリッター
関連
CMainFrame::NoTree
CMainFrame::OnMaxTree
CMainFrame::OnSideByTree
CMainFrame::m_SplitMode
1
2
0
CMainFrame::m_SplitX
ツリーを非表示
ツリーを最大
ツリーとキャンバスの両方を表示
スプリッターの位置
・新規ファイル、ツリーが表示されないこと
・単一ページのファイル、ツリーが表示されないこと
・複数ページのファイル、ツリーが表示されること
.exe 起動時のウィンドウに関して
同じウィンドウへのリンク先に関して
(同上 単一、複数 の2件)
位置が記録されていないファイルに関して
位置が記録されているファイルに関して
(同上 3件)
起動時のウィンドウのリンク先に関して
・スプリッターの位置を変更して、アプリ再起動で、位置が復帰すること
・NoTree にして、アプリ再起動で、NoTree で復帰すること
・MaxTree にして、アプリ再起動で、普通のサイズの Tree に戻っていること
起動時のウィンドウに関して
DDE起動時のウィンドウに関して
(同上 3件)
DDE起動時のウィンドウに関して
(同上 3件)
○
を付けていく
×
○
○
window.ini を頻繁に削除すること
○
○
○
○
○
○
再利用するウィンドウに関して
window.ini を削除、m_nCacheFrame = 2; m_minHideFrame = 0; にして、
.exe 起動時に単一ページを開き、もう1つの単一ページをDDEで開く。
閉じて、複数ページをDDEで開く。
スプリッターの位置を変えて、閉じて、単一ページを開く。
閉じて、複数ページをDDEで開いてスプリッターの位置が復帰していること。
○
・キャンバスのサイズ A4、図形にあわせる
・ウィンドウサイズをキャンバスにあわせる
コマンドラインが連続しても、遅くならないようにするために…
・(a) 表示中なら、それを使い、処理が終了しても閉じない。
・(b) キャッシュになければ、最小化で開き(キャッシュにロードし)、閉じる(非表示にする。)
・(c) 非表示のウィンドウキャッシュにあれば、最小化表示して、処理し、閉じる。(非表示にする。)
コマンドライン実行中は、最小化ウィンドウで表示すること。
CMainFrame::m_bCmdRunning
1. VC++で、画像変換を実行するデバッグ・パラメータをつけて SVG Cats を起動する。(b)
3. コマンドラインから、別のファイルの画像変換を実行する。(b)
-cp ...\a.svg ...\a.png
C:\home\SVGCats_src\Debug\SVGCats.exe -cp ...\b.svg ...\b.png
最小化の状態で処理を実行し、終了しても、SVG Cats は終了しないこと。最近のファイルを
更新しないこと。
起動中の SVG Cats に委譲し、最小化の状態で処理を実行し、処理が終了しても、SVG Cats は
終了しないこと。処理が終了するまで、コマンドラインから戻らないこと。最近のファイルを
更新しないこと。
8. SVG Cats 終了コマンドを実行する。
C:\home\SVGCats_src\Debug\SVGCats.exe -unload
5. コマンドラインから、同じファイルの画像変換を実行する。(c)
C:\home\SVGCats_src\Debug\SVGCats.exe -cp ...\b.svg ...\b2.png
最小化の状態で処理を実行し、処理が終了したら非表示にする。最小化状態のとき、
プロパティ・バーが表示されないこと。最近のファイルを更新しないこと。
6. SVG ファイルを表示する。(7. の準備)
C:\home\SVGCats_src\Debug\SVGCats.exe ...\b.svg
7. コマンドラインから、表示中のファイルを画像変換する。(a)
C:\home\SVGCats_src\Debug\SVGCats.exe -cp ...\b.svg ...\b3.png
処理前も処理後も表示状態は変わらないこと。最近のファイルを更新しないこと。
→テストに使うバッチファイルが入ったフォルダ
汎用テストデータを使う
4. ...\b.svg ファイルを開き、プロパティ・バーをフローティング・ウィンドウで表示状態にして、閉じる。
(5. の準備)
C:\home\SVGCats_src\Debug\SVGCats.exe ...\b.svg
CSVGCatApp_onOpenDdeMsg から SaveToImage を呼び出す場所と、
CSVGCatApp::SetRecentFile の先頭にブレークポイントを張る。
以降のコマンドで、画像変換時に SaveToImage でブレークされるので、その間に最小化状態を
確認する。画像変換を行うとき、SetRecentFile でブレークしないことで、最近のファイルが更新
しないことを確認する。
2.
→ 再現方法、手順
以上を、マルチウィンドウの全ての開き方でテストします。
[A] window.ini に記録がないとき:
[B] ツリーなしで表示する記録があるとき:
[F] ビューアモードのとき:
新規ファイルの表示ルーチンを通ること
仕様
ツール
test2\open_target.svg というファイルを開くことでテストします。
windows.ini を、実験するプロファイルへコピーするバッチファイルを使います。
実験するプロファイルのフォルダは、setting.bat に指定します。
→ test2 フォルダ
[C] ツリーありで表示する記録があるとき:
[D] プロパティ・バーをフロート表示する記録があるとき:
[E] プロパティ・バーをドッキング表示する記録があるとき:
[ 親: ウィンドウ位置 ]
ビューアモードをやめることができること
[G] ビューアモードで C を閉じて、非ビューアモードで A を開くとき
[H] 非ビューアモードで C を閉じて、ビューアモードで A を開くとき
以下は、ウィンドウ再利用
[openBCxA]
でのみ、テストします。
[I] プロパティ・バーを非表示で C を閉じて、プロパティ・バーを表示で A を開くとき
[J] プロパティ・バーを表示で C を閉じて、プロパティ・バーを非表示で A を開くとき
・タイトルバーがノートバーの中に入る位置に記録されていたとき、ノートバーの中に入れない。
旧版