MFCでファイル名渡すと関連付けされた実行ファイルを起動する

ShellExecuteEx()使います

// 実行ファイルのパスと名前
CString programPath = "hogehoge.txt";

// 実行フォルダのパス
CString workingDirectory = _T("C:\\Path\\To\\Working\\Directory");

// SHELLEXECUTEINFO構造体を初期化する
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
sei.fMask = SEE_MASK_NOCLOSEPROCESS; // プロセスハンドルを取得するためのフラグ
sei.lpVerb = _T("open");             // 操作("open"または"print"など)
sei.lpFile = programPath;               // ファイルのパス
sei.lpDirectory = workingDirectory;  // 実行フォルダのパス
sei.nShow = SW_SHOW;                 // 表示コマンド

// ShellExecuteEx関数を使用して関連付けられたアプリケーションを起動する
if (::ShellExecuteEx(&sei))
{
	// プロセスが終了するまで待つ
	::WaitForSingleObject(sei.hProcess, INFINITE);

	// プロセスハンドルを閉じる
	::CloseHandle(sei.hProcess);
}
else
{
	// エラーメッセージを表示する
	::AfxMessageBox(_T("コマンド実行に失敗しました。"));
}