MFCアプリケーションの学習をする必要が発生したため、記録します。
開発環境は、Visual Studio Community 2015です。
まずは、プロジェクト作成方法です。
ファイル⇒プロジェクトを選択し、MFCアプリケーションを選択します。プロジェクト名は、わかりにくくて、申し訳ないのですが、MFCApplication2
としました。
アプリケーションの種類で、ダイアログベースを選択してください。
あと、そのまま、デフォルト設定でOKボタンを押します。
プロジェクト作成が完了すると、次のような画面が表示されます。
■ PlaySound関数を用いた音楽再生サンプルアプリケーションを作成します。
・PlaySound関数を用いた簡単な音楽再生アプリケーションを作成します。 ただし、このアプリケーションは、wavファイルしか再生できず、また、音楽の途中からは再生できません。(泣)
■プログラム表示イメージ
(1) ソリューションエクスプローラーから、リソースファイルを選択します。
(2) リソースビューが開かれるので、DIALOGをダブルクリックします。
(3) 次のような画面が開かれます。
(4) 上記画面左のツールボックスを選択して、Edit Controlを選択して、ダイアログにドラック・アンド・ドロップします。
(5) 画面にファイルダイアログを開くボタンを追加します。 ツールボックスで、Buttonを選択して、変数の追加を選択します。
(6) メンバー変数の追加ウィザードは次のようにします。カテゴリはValueにしてください。
(7) Visual Studioの画面右下のプロパティウィンドウのCaptionに...
を入力します。
(8) プロパティウィンドウの管理イベント(電撃マークみたいなアイコン)を選択してください。
MFCApplication2Dlg.cppファイルにイベントハンドラメソッドが追加されるため、以下のようにコードを記載します。
void CMFCApplication2Dlg::OnBnClickedButton1() { CFileDialog dlg( TRUE, // FileOpen L".wav", L"", 0, L"WAVファイル (*.wav)|*.wav|All Files (*.*)|*.*||", this); if (dlg.DoModal() == IDOK) { m_strFilePath = dlg.GetPathName(); UpdateData(FALSE); } }
(9) 一度、アプリケーションを実行しましょう。ビルドして、実行しましょう。...
ボタンを押して、ダイアログが開かれることを確認してください。
(10) 次に、再生ボタンと停止ボタンを画面に追加します。
リソースビューから、ツールボックスを選択して、Buttonを二つダイアログ上にドラック・アンド・ドロップします。
Buttonの表示文字列をプロパティウィンドウからPlay````と
Stop```に変更してください。
(11) ```Play````のボタンを選択して、ボタンをクリックしたときのイベントハンドラメソッドを追加し、以下のように記載します。 音楽を再生するのに、PlaySound関数を用います。
void CMFCApplication2Dlg::OnBnClickedButton2() { PlaySound(m_strFilePath, NULL, 0); // 非同期ではない処理 }
(12) 同様に、```Stop````のボタンを選択して、ボタンをクリックしたときのイベントハンドラメソッドを追加し、以下のように記載します。
void CMFCApplication2Dlg::OnBnClickedButton3() { PlaySound(NULL, NULL, 0); }
(13)
PlaySound関数を使うには、mmsystem.hのヘッダファイルをインクルードし、winmm.libをリンクする必要があります。stdafx.h````に、インクルード文
#include <mmsystem.h>```を追加してください。
プロジェクトを右クリックして、プロジェクトのプロパティページを開いて、構成プロパティ⇒リンカーから、追加の依存ファイルにwinmm.libを記載します。
(14) アプリケーションを実行しましょう。wavファイルをファイル選択ボタンから開き、再生ボタンを押して、音楽が再生されることを確認してください。 音楽は、再生できるようになりましたが、他のボタンを押すことができません。PlaySound関数が非同期処理になっていないためです。
そこで、次のように、PlaySound関数の呼び出し方を修正して、非同期処理で音楽を再生します。
void CMFCApplication2Dlg::OnBnClickedButton2() { PlaySound(m_strFilePath, NULL, SND_FILENAME | SND_ASYNC); // 非同期処理 (音楽再生中に、Stopボタンが押せます) }
(15) アプリケーションを実行しましょう。 wavファイルをファイル選択ボタンから開き、再生ボタンを押して、音楽が再生され、音楽再生中に、停止ボタンが押せれば、本サンプルアプリケーションは完成です。
古い技術ではありますが、引き続き、MFCの学習を続けていこうと思います。
なお、本ページの記載は、以下のサイトを参考にさせていただきました。 ありがとうございます。
・Cactus Software様 MFC C++アプリケーション