#include <windows.h>
#include "resource.h"


TCHAR DurationStr[10];
TCHAR ToneStr[10];

HINSTANCE gLibSmartio = NULL;

typedef BYTE (*SIOSETSPEAKER)(BYTE Duration, BYTE Tone);

SIOSETSPEAKER SIOSetSpeaker=NULL;

extern void wtoa(TCHAR *loveW, char *love, int lenw);

BOOL CALLBACK SpeakerDlgProc(HWND hwndDlg,
                           UINT message,
                           WPARAM wParam,
                           LPARAM lParam)
{
    UINT nID;
    HWND hwndEdit;
	//TCHAR temp[256];

	USHORT Duration;
	USHORT Tone;

    switch(message)
    {
    case WM_INITDIALOG:
#if 1
        hwndEdit = GetDlgItem(hwndDlg, IDC_NAME_DD);
        SetWindowText(hwndEdit, DurationStr);

		hwndEdit = GetDlgItem(hwndDlg, IDC_NAME_PP);
        SetWindowText(hwndEdit, ToneStr);
#endif

		gLibSmartio = LoadLibrary((L"keybddr.dll"));

		if(gLibSmartio == NULL)
		{
			gLibSmartio = LoadLibrary((L"smartio.dll"));			

			RETAILMSG(1,(L"\r\nCan't find keybddr.DLL\r\n"));
			exit(0);
		}

		SIOSetSpeaker = (SIOSETSPEAKER)GetProcAddress(gLibSmartio,(L"SIOSetSpeaker"));

		if(SIOSetSpeaker == NULL)
		{	
			RETAILMSG(1,(L"\r\nCan't find the function(%s)\r\n",L"SIOSetSpeaker"));
			exit(0);
		}

        return (FALSE);

    case WM_COMMAND:
        nID = LOWORD(wParam);

        switch(nID)
        {
        case IDOK:
			FreeLibrary(gLibSmartio);
            EndDialog(hwndDlg, nID);
            break;
		case ID_PLAY:
			hwndEdit = GetDlgItem(hwndDlg, IDC_NAME_DD);
			GetWindowText(hwndEdit, DurationStr,sizeof(DurationStr));

			Duration = (BYTE)_wtoi(DurationStr);

			//swprintf(temp, L"%s = %d",DurationStr,Duration);
           	//MessageBox(NULL,temp,DurationStr, MB_OK);			

			hwndEdit = GetDlgItem(hwndDlg, IDC_NAME_PP);
			
			GetWindowText(hwndEdit, ToneStr,sizeof(ToneStr));
			Tone = (BYTE)_wtoi(ToneStr);

			//swprintf(temp, L"%s=%d",ToneStr,Tone);
           	//MessageBox(NULL,temp, ToneStr,MB_OK);			
			SIOSetSpeaker((BYTE)Duration,(BYTE)Tone);

            break;
        case IDCANCEL:
			FreeLibrary(gLibSmartio);
            EndDialog(hwndDlg, nID);
            break;
        default:
            break;
        }   //End of switch(nID) block
        return (TRUE);

    default:
        return (FALSE);

    }       //End of switch(message) block

	return (FALSE);

}

