Application



起動されたディレクトリ名を取得する

  • 用途
これにより、起動されたアプリケーションと同じディレクトリにあるファイルに容易にアクセス可能となる。等。
例)
TCHAR szAppDir[_MAX_PATH];  // ディレクトリ(ドライブ有)
TCHAR szFull[_MAX_PATH];    // フルパス
TCHAR szDrive[_MAX_DRIVE];  // ドライブ
TCHAR szDir[_MAX_DIR];      // ディレクトリ(ドライブ無)

// フルパス取得
::GetModuleFileName(NULL, szFull, sizeof(szFull)/sizeof(TCHAR));
TRACE(_T("szFull:   %s\n"), szFull);

// フルパスをドライブやディレクトリに分解
_tsplitpath_s(szFull, 
	szDrive, sizeof(szDrive)/sizeof(TCHAR),
	szDir, sizeof(szDir)/sizeof(TCHAR), 
	NULL, NULL, NULL, NULL);
TRACE(_T("szDrive:  %s\n"), szDrive);
TRACE(_T("szDir:    %s\n"), szDir);

// ドライブとディレクトリを連結
_tmakepath_s(szAppDir, sizeof(szAppDir)/sizeof(TCHAR), 
	szDrive, szDir, NULL, NULL);
TRACE(_T("szAppDir: %s\n"), szAppDir);
実行結果)
szFull:   c:\Work\Develop\Programing\DumpMem\Debug\DumpMem.exe
szDrive:  c:
szDir:    \Work\Develop\Programing\DumpMem\Debug\
szAppDir: c:\Work\Develop\Programing\DumpMem\Debug\
TOP


二重起動防止


MFCの場合

アプリ名を定義する。
#define APP_NAME		(_T("SanpApp.exe"))
アプリクラスのメンバとして、ハンドルを追加する。
HANDLE m_hMutexApp;	// 二重起動防止ミューテックス
InitInstance()内で、ミューテックスを作成する。(SDKの場合はWinMain()内で)
m_hMutexApp = CreateMutex(NULL, TRUE, APP_NAME);
if (ERROR_ALREADY_EXISTS == GetLastError())		return FALSE;
ExitInstance()内で、ミューテックスを削除する。
ReleaseMutex(m_hMutexApp);
CloseHandle(m_hMutexApp);
TOP


最小化、最大化、元のサイズに戻す、終了

メインウィンドウに以下のようにメッセージをポストする。
// 最小化
AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND, SC_MINIMIZE);
// 最大化
AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND, SC_MAXIMIZE);
// 元のサイズに戻す
AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND, SC_RESTORE);
// 終了
AfxGetMainWnd()->PostMessage(WM_CLOSE);
TOP

コメント

  • 元のサイズに戻った時に発行されるメッセージはありますか? -- 重松 宏昌 (2009-08-02 10:20:53)
名前:
コメント:
TOP

最終更新:2009年08月02日 10:20
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。