ファイル名:easyplay.dlg

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
	DEFPUSHBUTTON "参照",  IDBROWSE, 96, 3, 40, 14
	PUSHBUTTON "再生",  IDPLAY,   44, 35, 40, 14
    PUSHBUTTON "閉じる",IDCANCEL, 96, 35, 40, 14
END

ファイル名:easyplay.h

#include <windows.h>
#include <mmsystem.h>
#define IDICON 101
#define IDEDIT 103
#define IDPLAY 104
#define IDBROWSE 106
#define IDM_VER 107

ファイル名:easyplay.rc

#include "easyplay.h"
eplayicon  ICON "easyplay.ICO"
#include "easyplay.dlg"

ファイル名:easyplay.c

#include "easyplay.h"
#include <commdlg.h>
#include <string.h>
/*ダイアログ関数(Windowsからコールバックされる)*/
#ifdef __cplusplus
extern "C"
#endif
BOOL FAR PASCAL easyplay(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
	static OPENFILENAME ofn;
	int flag;
	char buf[260], achFileTitle[256];
	HCURSOR hcur;
	HMENU hsysmenu;

	switch(msg){
	case WM_COMMAND:
		switch((WORD)wParam) {/*コントロールID*/
		case IDBROWSE:
			memset(&ofn, 0, sizeof(OPENFILENAME));
			ofn.lStructSize = sizeof(OPENFILENAME);
			ofn.hwndOwner = hDlg;
			ofn.lpstrFilter = "サウンド(*.WAV)\0*.WAV\0全ファイル(*.*)\0*.*\0";
			ofn.lpstrCustomFilter = NULL;
			ofn.nFilterIndex = 1;
			buf[0] = 0;
			ofn.lpstrFile = (LPSTR)buf;
			ofn.nMaxFile = sizeof(buf);
			ofn.lpstrFileTitle = (LPSTR)achFileTitle;
			ofn.nMaxFileTitle = sizeof(achFileTitle);
			ofn.lpstrInitialDir = NULL;
			ofn.lpstrTitle = "再生用にファイルを開く";
			ofn.lpstrDefExt = NULL;
			ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
			flag=GetOpenFileName((LPOPENFILENAME)&ofn);
			if (flag)
				SetDlgItemText(hDlg, IDEDIT, buf);
			break;
		case IDPLAY:
			//GetWindowText(GetDlgItem(hDlg, IDEDIT), buf, sizeof(buf));
			GetDlgItemText(hDlg, IDEDIT, buf, sizeof(buf));
			if (strlen(buf)==0) {
				MessageBox(hDlg, "ファイル名を入力してください", "エラー", MB_OK);
				break;
			}
			EnableWindow(GetDlgItem(hDlg, IDPLAY), FALSE);
			EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE);
			EnableWindow(GetDlgItem(hDlg, IDBROWSE), FALSE);
			hcur=SetCursor(LoadCursor(NULL, IDC_WAIT)); /* カーソルを砂時計に */
			flag=sndPlaySound(buf, SND_SYNC|SND_NODEFAULT);
			SetCursor(hcur);                            /* カーソルを元に戻す */
			if (flag==0)
				MessageBox(hDlg, "ファイルが見つかりません", "エラー", MB_OK);
			EnableWindow(GetDlgItem(hDlg, IDPLAY), TRUE);
			EnableWindow(GetDlgItem(hDlg, IDCANCEL), TRUE);
			EnableWindow(GetDlgItem(hDlg, IDBROWSE), TRUE);
			break;
		case IDCANCEL:		/* 「閉じる」ボタン OR システムメニューの「閉じる」 */
			EndDialog( hDlg, wParam );
			break;
		default:
			return FALSE; /*メッセージを処理しなかった*/
		}
		break;
	case WM_SYSCOMMAND:
		switch (wParam)	{
		case IDM_VER:
			MessageBox(hDlg, "簡易サウンドプレーヤ\nバージョン 0.01\nCopyright (c)のぐー",
			"バージョン情報", MB_OK);
			break;
		default:
			return FALSE; /*メッセージを処理しなかった*/
		}
		break;
	case WM_INITDIALOG:
		hsysmenu=GetSystemMenu(hDlg, FALSE);
		AppendMenu(hsysmenu, MF_SEPARATOR, (UINT)-1, "-");
		AppendMenu(hsysmenu, MF_STRING | MF_ENABLED, IDM_VER, "バージョン情報");
		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;
	lpProc = (DLGPROC)MakeProcInstance((FARPROC)easyplay, hinst);
	DialogBox(hinst, "EASYPLAY", NULL, lpProc);/*ここでダイアログボックスを作成*/
	FreeProcInstance((FARPROC)lpProc);
	return 0;
}

ファイル名:easyplay.def

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
戻る