第15回 「送る」メニューから画像を開く

ImageViewer15_01.gif 起動時にコマンドラインで指定されたファイルを開くようにする。これによりEXEファイルやEXEファイルへのショートカットへ画像ファイルをドラッグ・アンド・ドロップしても画像が開くようになる。
コマンドラインの取得および解析にはCommandLineToArgvWとGetCommandLineWを利用した。GetCommandLineはユニコードおよび非ユニコードバージョンがAPIとして用意されているが、CommandLineToArgvWは非ユニコード版がない(対応OSもWindows 2000以降)。そのため取得したファイル名はCStringに一度変換してから処理している。
GDI+へ渡すファイル名はもともとユニコードなので本来変換の必要はないのだが...
		LPWSTR*	ppszArglist;
		int		nArgs;

		//コマンドライン引数で指定された画像を読み込む
		ppszArglist = ::CommandLineToArgvW(::GetCommandLineW(),&nArgs);
		if(ppszArglist && nArgs > 1)
			LoadImage((CAtlString)ppszArglist[1]);
		::LocalFree(ppszArglist);

ImageViewer15_02.gif
コマンドラインから引数の対応により、「送る」メニューからの画像表示にも対応する。

当然のことながら利用するためにはあらかじめSendToフォルダへショートカットを作っておく必要がある。Windows Vistaの場合のフォルダ位置は

C:\ Users\ ○○\ AppData\ Roaming\ Microsoft\ Windows\ SendTo\

になる。


プロジェクトファイルをダウンロード


カテゴリー「画像表示ソフトを作る」 のエントリー