⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comdial.h

📁 使用tapi实现的用语音modem进行接电话并播放wav文件的程序
💻 H
字号:

#ifndef _COMDIAL_H
#define _COMDIAL_H
#include <windows.h>
#include <windowsx.h>
#include <mmsystem.h>
#include <commdlg.h>
#include <tapi.h>
#include <io.h>
#include <stdlib.h>
#include <malloc.h>
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <mcx.h>


#define WIN95TAPIVERSION		0x00010004

typedef struct tagMYTAPI {
	HLINEAPP hTAPI;
	HLINE hLine;
	DWORD dwLine;
	DWORD dwVersionToUse;
	DWORD dwNumLines;
	DWORD dwWaveInID;
	DWORD dwWaveOutID;
	HCALL hCall;
	HANDLE h_wavein;
	HANDLE h_waveout;
	LINECALLBACK CallbackProc;

	int iPlayState;
	int iPlaySubState;
	int nMsgCnt;
	int nPlayCnt;
	DWORD nRingCnt;
	DWORD nRings;

	BOOL bLineopen;
	BOOL bInitialized;
	BOOL bLinedevcapsalloced;
	BOOL bLinedevstatusalloced;
	BOOL bLinecallstatusalloced;
	BOOL bLinecallinfoalloced;
	BOOL bWaitForCall;

	LINEDEVCAPS *pLinedevcaps;
	LINEDEVSTATUS *pLinedevstatus;
	LINECALLSTATUS *pLinecallstatus;
	LINECALLINFO *pLinecallinfo;

	// Phone fields

	HPHONEAPP hTAPIPhone;	// handle to TAPI phone API
	DWORD dwNumPhones;	//number of phone devices
	DWORD dwPhoneVersionToUse;	//version of phone API to use
	DWORD dwPhone;				// phone device id
	HPHONE hPhone;				// handle to phone device
	BOOL bPhonedevcapsalloced;	// TRUE if PHONECAPS struct is alloced
	PHONECAPS *pPhonedevcaps;	// pointer to PHONECAPS struct
	PHONECALLBACK PhoneCallbackProc;	// callback function for phone device
	BOOL bPhoneInitialized;		// TRUE if phone initialized
	BOOL bPhoneopen;			// TRUE if phone opened


} MYTAPI;


#define PLAYSTATE_IDLE					1
#define PLAYSTATE_PASSWORD				2
#define PLAYSTATE_PLAYBACK				3
#define PLAYSTATE_RECORD				4
#define PLAYSUBSTATE_PASSWORD0			1
#define PLAYSUBSTATE_PASSWORD1			2
#define PLAYSUBSTATE_PASSWORD2			3
#define PLAYSUBSTATE_PASSWORD3			4


#define RINGCNT							3

/* structure returned by Unimodem which contains device handle and name */
typedef struct tagCommID {
	HANDLE hComm;
	char szDeviceName[1];
} CommID;


int telephonyInitialize(HWND hWnd, HINSTANCE hInst);
LONG mylineGetDevCaps(void);
LONG telephonyCaps(void);
void telephonyShutdown(void);
int telephonyOpen(HWND hWnd, HINSTANCE hInst);
LONG telephonySettings(HWND hwnd);
void FAR PASCAL LineCallBackProc(DWORD dwDevice,DWORD dwMessage,
           DWORD dwInstance,DWORD dwParam1,DWORD dwParam2,DWORD dwParam3);
void ProcessTAPIError (LONG lrc);
void myDrawTAPIIcon(HWND hwnd) ;
LONG mylineGetDevConfig();
LONG mylineGetOldDevConfig();
LONG mylineGetCommID (DWORD dwSelect);
LONG mylineGetWaveID (DWORD dwSelect, LPSTR waveDev);
LONG mylineGetLineDevStatus(void);
LONG mylineGetAddressStatus(void);
LONG mylineGetCallStatus(void);
LONG mylineGetCallStatus(void);
LONG portSettings(HWND hwnd);
LONG telephonyGetModemSettings(void);
LONG telephonyGetModemCaps(void);
void myMessageBox (LPSTR s);

DWORD ReadThread (LPDWORD lpdwParam1);
void locProcessCommError (DWORD dwError);
void locProcessBytes (LPBYTE buf, DWORD dwBytes);


HWAVE playSound(DWORD, char *, HWND);
HWAVEIN recordMessage(DWORD dw_devid);
int saveMessage (char *name, LPWAVEHDR hdr);


// phone functions
void FAR PASCAL PhoneCallBackProc(DWORD dwDevice,DWORD dwMessage,
           DWORD dwInstance,DWORD dwParam1,DWORD dwParam2,DWORD dwParam3);
int myphoneInitialize(HWND hWnd, HINSTANCE hInst);
LONG myphoneGetDevCaps(void);
void myphoneShutdown(void);
int myphoneOpen(HWND hWnd, HINSTANCE hInst);


#endif _COMDIAL_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -