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++アプリケーション