これを保存すると、以下のようなダイアログテンプレートが出来ます。 (Borlandのリソースワークショップを使うと、dlgではなくrcファイルになると思います。) ダイアログエディタをお持ちでない方は、これを直接テキストエディタで作成してください。
EASYPLAY DIALOG 21, 16, 146, 55 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "EASYPLAY" FONT 12, "System" BEGIN ICON "eplayicon", IDICON, 8, 8, 16, 14 LTEXT "ファイル名", 102, 47, 6, 82, 8 EDITTEXT IDEDIT, 44, 18, 94, 12, ES_AUTOHSCROLL PUSHBUTTON "再生", IDPLAY, 44, 35, 40, 14 PUSHBUTTON "閉じる",IDCANCEL, 96, 35, 40, 14 ENDそれ以外に必要なファイルは、以下の通り。
#include <windows.h> #include <mmsystem.h> #define IDICON 101 #define IDEDIT 103 #define IDPLAY 104
#include "easyplay.h" eplayicon ICON "easyplay.ICO" #include "easyplay.dlg"
#include "easyplay.h" /*ダイアログ関数(Windowsからコールバックされる)*/ /*「FAR PASCAL」は「CALLBACK」でも可。その場合「extern "C"」を含む3行は不要*/ #ifdef __cplusplus extern "C" #endif BOOL FAR PASCAL easyplay(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){ char buf[260]; switch(msg){ case WM_COMMAND: switch((WORD)wParam) {/*コントロールID*/ case IDPLAY: GetWindowText(GetDlgItem(hDlg, IDEDIT), buf, sizeof(buf)); /* GetDlgItemText(hDlg, IDEDIT, buf, sizeof(buf)); でも良い */ sndPlaySound(buf, SND_SYNC); break; case IDCANCEL: /* 「閉じる」ボタン OR システムメニューの「閉じる」 */ EndDialog( hDlg, wParam ); break; default: return FALSE; /*メッセージを処理しなかった*/ } break; case WM_INITDIALOG: SetFocus(GetDlgItem(hDlg,IDEDIT)); return FALSE;/* SetFocusしたらFALSE */ default: return FALSE; /*メッセージを処理しなかった*/ } return TRUE; /*メッセージを処理した*/ } /*メイン関数*/ int PASCAL WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int cmdshow){ DLGPROC lpProc = (DLGPROC)MakeProcInstance((FARPROC)easyplay, hinst); DialogBox(hinst, "EASYPLAY", NULL, lpProc);/*ここでダイアログボックスを作成*/ FreeProcInstance((FARPROC)lpProc); return 0; }
NAME EASYPLAY DESCRIPTION 'EASYPLAY: EASY SOUND PLAYER' EXETYPE WINDOWS STUB 'WINSTUB.EXE' CODE PRELOAD MOVEABLE DATA MOVEABLE PRELOAD MULTIPLE HEAPSIZE 4096 STACKSIZE 8192 EXPORTS EASYPLAY @1
では、実行してみてください。ファイル名の部分にWAVファイルをフルパスで入れて
「再生」ボタンを押すと音が鳴ります。「閉じる」ボタンを押すと、プログラムを
終了します。かなりWindowsプログラムらしくなってきましたね。
(長くなってきたので、プログラムの説明は次回に回します。)
一つ上のページに戻る