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

📄 myvoipctl.h

📁 C++ 写的VOICE OVER IP 很好的例子
💻 H
字号:
#if !defined(AFX_MYVOIPCTL_H__1F3F81F2_B882_4C5D_97DF_AD50DC951DCB__INCLUDED_)
#define AFX_MYVOIPCTL_H__1F3F81F2_B882_4C5D_97DF_AD50DC951DCB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// MyvoipCtl.h : Declaration of the CMyvoipCtrl ActiveX Control class.
#include <objsafe.h>
#include "MySock.h"
#include "Sound.h"
#include  "SoundManager.h"
#include "StreamingSound.h"
#include "WaveFile.h"
#define NUM_PLAY_NOTIFICATIONS 32
#define NUM_BUFFERS     (32)
#define MAX(a,b)        ( (a) > (b) ? (a) : (b) )

#define SAFE_DELETE(p)  { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
#define UM_RECEIVERTP WM_USER+12
/////////////////////////////////////////////////////////////////////////////
// CMyvoipCtrl : See MyvoipCtl.cpp for implementation.
typedef struct{
		char clientid[20];
		char buff[4096];
	} voicepacket;

class CMyvoipCtrl : public COleControl
{
	DECLARE_DYNCREATE(CMyvoipCtrl)
   
	DECLARE_INTERFACE_MAP()

	BEGIN_INTERFACE_PART(ObjSafe, IObjectSafety)
		STDMETHOD_(HRESULT, GetInterfaceSafetyOptions) ( 
            /* [in] */ REFIID riid,
            /* [out] */ DWORD __RPC_FAR *pdwSupportedOptions,
            /* [out] */ DWORD __RPC_FAR *pdwEnabledOptions
		);
        
        STDMETHOD_(HRESULT, SetInterfaceSafetyOptions) ( 
            /* [in] */ REFIID riid,
            /* [in] */ DWORD dwOptionSetMask,
            /* [in] */ DWORD dwEnabledOptions
		);
	END_INTERFACE_PART(ObjSafe);

   
// Constructor
public:
	CMyvoipCtrl();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMyvoipCtrl)
	public:
	virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
	virtual void DoPropExchange(CPropExchange* pPX);
	virtual void OnResetState();
	//}}AFX_VIRTUAL

// Implementation
protected:
	~CMyvoipCtrl();

	DECLARE_OLECREATE_EX(CMyvoipCtrl)    // Class factory and guid
	DECLARE_OLETYPELIB(CMyvoipCtrl)      // GetTypeInfo
	DECLARE_PROPPAGEIDS(CMyvoipCtrl)     // Property page IDs
	DECLARE_OLECTLTYPE(CMyvoipCtrl)		// Type name and misc status

// Message maps
	//{{AFX_MSG(CMyvoipCtrl)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

// Dispatch maps
	//{{AFX_DISPATCH(CMyvoipCtrl)
	afx_msg void Record(LPCTSTR scrIP, LPCTSTR scrID);
	afx_msg void Stop();
	//}}AFX_DISPATCH
	DECLARE_DISPATCH_MAP()

	afx_msg void AboutBox();
	afx_msg void RecMsg(WPARAM wParam, LPARAM lParam);


// Event maps
	//{{AFX_EVENT(CMyvoipCtrl)
	//}}AFX_EVENT
	DECLARE_EVENT_MAP()

// Dispatch and event IDs
public:
	DWORD GetDXVersion();
static	long timer;
	BOOL bRecord;
void InitSock();
static	HRESULT StartBuffers();
static	HRESULT SetBufferFormats(WAVEFORMATEX *pwfxInput, WAVEFORMATEX *pwfxOutput);
static	HRESULT RestoreBuffer(LPDIRECTSOUNDBUFFER pDSBuffer, BOOL *pbRestored);
static	HRESULT OnFormatsOK();
static	HRESULT InitDirectSound();
static	HRESULT HandleNotification();
static	HRESULT FreeDirectSound();
static	HRESULT CreateOutputBuffer();
	enum {
	//{{AFX_DISP_ID(CMyvoipCtrl)
	dispidRecord = 1L,
	dispidStop = 2L,
	//}}AFX_DISP_ID
	};
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYVOIPCTL_H__1F3F81F2_B882_4C5D_97DF_AD50DC951DCB__INCLUDED)

⌨️ 快捷键说明

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