亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? netphonedlg.cpp

?? 具有異形窗口的網絡電話的程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// NetPhoneDlg.cpp : implementation file
//

#include "stdafx.h"
#include "NetPhone.h"
#include "NetPhoneDlg.h"
#include "mmsystem.h"     // 音頻相關函數所需頭文件
#include "SocketServer.h"
#include "SocketClient.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define INP_BUFFER_SIZE 4096   // 緩沖區大小

#define WM_NC  1001   // 最小到系統托盤區時自定義消息
#define IDC_NC 1002   // 托盤區NOTIFYICONDATA結構對應資源號 

static HWAVEIN      hWaveIn ;        // 錄音設備句柄
static HWAVEOUT     hWaveOut ;       // 播放設備句柄
static PBYTE        pBufferIn[2];    // 用于接收和播放的兩塊緩沖區
static PBYTE        pBufferOut[2];   // 用于發送和錄音的兩塊緩沖區
static PWAVEHDR     pWaveHdrIn[2];   // 用于錄音的PWAVEHDR結構數組
static PWAVEHDR     pWaveHdrOut[2];  // 用于播放的PWAVEHDR結構數組
static WAVEFORMATEX waveform ;       // 用于打開音頻設備的WAVEFORMATEX結構

int                 nIn=0;       // pBufferIn[2]中,當前播放緩沖區號
int                 nOut=0;      // pBufferOut[2]中,當前錄音緩沖區號
int                 nComState=1;  // 用于顯示通話狀態信息的變量
BOOL                bDisconnectState=TRUE;   // 是否處于未連接狀態
BOOL                bBtnConnectDown =FALSE;  // “連接”按鈕是否被按下
BOOL                bServerState    =FALSE;  // 是否處于服務器端狀態
BOOL                bClientState    =FALSE;  // 是否處于客戶端狀態
BOOL                bMiniState      =FALSE;  // 是否處于最小化狀態


CSocketServer       Socket_Server;    // 接收套接字
CSocketClient       Socket_Client;    // 發送套接字
CSocketServer       Socket_Listen;    // 偵聽套接字
CString             LocalIP;          // 本機IP地址
CString             sRemoteIP;        // 遠端主機IP地址
CString  sAck;             // 儲存遠端機器應答信息
char     cAck[15];         // 儲存遠端機器應答信息


extern CNetPhoneApp theApp;
CNetPhoneDlg  *pDlg;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNetPhoneDlg dialog
CNetPhoneDlg::CNetPhoneDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNetPhoneDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNetPhoneDlg)
	m_sServerIP = _T("192.168.0.11");  
	m_bFirstMini = TRUE;                
	m_bFirstRunBitmap = TRUE;
	m_bFirstRunAudio  = TRUE;
	m_Left=0;
    m_Top=0;
	m_Width=342;
	m_Height=426;
	m_FrameWidth=0;
	m_CaptionHeight=0;
	m_BackBitmapID;
	m_MaskLeftOff=0;
	m_MaskRightOff=0;
	m_MaskTopOff=0;
	m_MaskBottomOff=0;

    m_pBtnCommunicate=new CBitmapButton;
	m_pBtnConnect    =new CBitmapButton;
	m_pBtnDisconnect =new CBitmapButton;
    m_pBtnHelp       =new CBitmapButton;
	m_pBtnExit       =new CBitmapButton;
	m_pBtnMinimize   =new CBitmapButton;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CNetPhoneDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNetPhoneDlg)
	DDX_Control(pDX, IDC_STATIC_INFORMATION, m_staInformation);
	DDX_Text(pDX, IDC_SERVER, m_sServerIP);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CNetPhoneDlg, CDialog)
	//{{AFX_MSG_MAP(CNetPhoneDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_MESSAGE(WM_NC,OnNc)
	ON_WM_ERASEBKGND()
	ON_WM_NCHITTEST()
	ON_BN_CLICKED(ID_EXIT, OnExit)
	ON_BN_CLICKED(IDC_BUTTON_MINIMIZE, OnButtonMinimize)	
	ON_BN_CLICKED(ID_HELP, OnHelp)
	ON_MESSAGE(MM_WIM_OPEN,ON_MM_WIM_OPEN)
	ON_MESSAGE(MM_WIM_DATA,ON_MM_WIM_DATA)
	ON_MESSAGE(MM_WIM_CLOSE,ON_MM_WIM_CLOSE)
	ON_MESSAGE(MM_WOM_OPEN,ON_MM_WOM_OPEN)
	ON_BN_CLICKED(IDC_BUTTON_CONNECT, OnButtonConnect)
	ON_BN_CLICKED(IDC_BUTTON_COMMUNICATE, OnButtonCommunicate)    
	ON_BN_CLICKED(IDC_BUTTON_DISCONNECT, OnButtonDisconnect)
	
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNetPhoneDlg message handlers
void CNetPhoneDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CNetPhoneDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

BOOL CNetPhoneDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	// Add "About..." menu item to system menu.
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon	
	// TODO: Add extra initialization here
	// 得到對話框句柄
	pDlg=(CNetPhoneDlg *)theApp.m_pMainWnd; 
    // 初始化按鈕	
	InitBitmapButton();
    // 獲得本機IP
    WORD wVersionRequested;
    WSADATA wsaData;
    char name[255];
    PHOSTENT hostinfo;
    wVersionRequested = MAKEWORD( 2, 0 );
    if(WSAStartup( wVersionRequested, &wsaData ) == 0 )
    {
       if( gethostname ( name, sizeof(name)) == 0)
       {
           if((hostinfo = gethostbyname(name)) != NULL)
           {
               LocalIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
	       }
       }            
       WSACleanup( );
    } 
    
    //	設置按鈕的初始狀態
	GetDlgItem(IDC_BUTTON_COMMUNICATE)->EnableWindow(FALSE) ;
	GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(FALSE) ;
	GetDlgItem(IDC_BUTTON_CONNECT)->SetFocus();

	// 創建偵聽套接字
	Socket_Listen.Create(5000,SOCK_STREAM);
	// 綁定偵聽套接字到本地IP
	Socket_Listen.Bind(5000,LocalIP);
	// 開始偵聽
	Socket_Listen.Listen();
	// 創建發送(客戶端)套接字
	Socket_Client.Create(5001,SOCK_STREAM);
	
	// 模板處理區域與窗口邊框的距離
	m_MaskLeftOff=m_MaskTopOff=m_MaskRightOff=m_MaskBottomOff=0;
	// 窗口邊框寬度和標題欄高度
	m_FrameWidth=m_CaptionHeight=0;
	LONG style=::GetWindowLong(this->m_hWnd,GWL_STYLE);
	if((style&WS_BORDER)==WS_BORDER)
		m_FrameWidth=::GetSystemMetrics(SM_CXBORDER);
	if((style&WS_THICKFRAME)==WS_THICKFRAME)
		m_FrameWidth=::GetSystemMetrics(SM_CXFIXEDFRAME);
	if((style&DS_MODALFRAME)==DS_MODALFRAME)
	    m_FrameWidth=::GetSystemMetrics(SM_CXFIXEDFRAME);
	if((style&WS_CAPTION)==WS_CAPTION)
	{
		m_FrameWidth=::GetSystemMetrics(SM_CXFIXEDFRAME);
		m_CaptionHeight=::GetSystemMetrics(SM_CYSMCAPTION);
	}
	m_CaptionHeight+=m_FrameWidth*2;
	// 重置窗口位置和大小
	MoveWindow(m_Left,m_Top,m_Width+m_FrameWidth*2,m_Height+m_CaptionHeight,TRUE);
    
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CNetPhoneDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		// m_bFirstRunBitmap使得SetupRegion只在程序啟動時被調用一次
		if(m_bFirstRunBitmap)
		{
		   BeginWaitCursor();
		   // 區域處理,設置透明區域顏色為黑色
		   SetupRegion(GetWindowDC(),IDB_BACKBITMAP,IDB_BACKBITMAP,0x00000000);
		   EndWaitCursor();
		   m_bFirstRunBitmap = FALSE; 
		}		
		CDialog::OnPaint();
	}
}

// “最小化”按鈕被按下消息處理函數
void CNetPhoneDlg::OnButtonMinimize() 
{
	if(m_bFirstMini == TRUE)
	{  
	   NOTIFYICONDATA nc;
	   nc.cbSize = sizeof(NOTIFYICONDATA);
	   nc.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	   nc.hWnd = m_hWnd;
	   lstrcpy(nc.szTip,"o^_^o 網絡電話 @_@");
	   nc.uCallbackMessage = WM_NC;
	   nc.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
	   nc.uID = IDC_NC;
	   Shell_NotifyIcon(NIM_ADD, &nc); 
	   m_bFirstMini = FALSE;
	}
	bMiniState=TRUE;
	ShowWindow(FALSE);	
}

// WM_NC消息處理函數
void CNetPhoneDlg::OnNc(WPARAM wParam,LPARAM lParam)
{
	if(lParam == WM_LBUTTONDBLCLK)
      ShowWindow(SW_SHOW);
	bMiniState=FALSE;	
}

// 初始化按鈕控件
void CNetPhoneDlg::InitBitmapButton()
{
	// 按鈕控件加載按鈕資源
    m_pBtnCommunicate->AutoLoad(IDC_BUTTON_COMMUNICATE,this);
	m_pBtnConnect->AutoLoad(IDC_BUTTON_CONNECT,this);
	m_pBtnDisconnect->AutoLoad(IDC_BUTTON_DISCONNECT,this);
	m_pBtnExit->AutoLoad(ID_EXIT,this);
	m_pBtnHelp->AutoLoad(ID_HELP,this);
    m_pBtnMinimize->AutoLoad(IDC_BUTTON_MINIMIZE,this);	

    // 按鈕加載位圖資源
	m_pBtnCommunicate->LoadBitmaps(IDB_COMMUNICATEU,0,0,IDB_COMMUNICATEX);
	m_pBtnConnect->LoadBitmaps(IDB_CONNECTU,0,0,IDB_CONNECTX);
	m_pBtnDisconnect->LoadBitmaps(IDB_DISCONNECTU,0,0,IDB_DISCONNECTX);
    m_pBtnExit->LoadBitmaps(IDB_EXITU,0,0,0);
    m_pBtnHelp->LoadBitmaps(IDB_HELPU,0,0,0);
    m_pBtnMinimize->LoadBitmaps(IDB_MINIU,0,0,0);

	// 設置按鈕大小適合于貼圖大小
	m_pBtnCommunicate->SizeToContent();
    m_pBtnConnect->SizeToContent();
	m_pBtnDisconnect->SizeToContent();
    m_pBtnExit->SizeToContent();
	m_pBtnHelp->SizeToContent();
    m_pBtnMinimize->SizeToContent();
}

// 區域處理函數
void CNetPhoneDlg::SetupRegion(CDC* pDC,UINT BackBitmapID,UINT MaskBitmapID,COLORREF TransColor)
{
  CDC       memDC;
  CBitmap   cBitmap;
  CBitmap*  pOldMemBmp=NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美自拍偷拍一区| 久久久精品人体av艺术| 精品久久久久久久久久久久包黑料 | 亚洲国产精品欧美一二99| 精彩视频一区二区三区| 99精品视频一区二区三区| 日韩免费看网站| 亚洲一区二区三区中文字幕| 国产自产高清不卡| 欧美日韩一卡二卡| 中文字幕中文字幕一区二区 | 717成人午夜免费福利电影| 国产精品美女视频| 国产精品白丝jk白祙喷水网站| 在线中文字幕一区二区| 国产欧美日韩在线| 精品一区二区在线视频| 欧美一级欧美一级在线播放| 欧美在线免费观看亚洲| 欧美中文字幕不卡| 国产精品少妇自拍| 国产伦精品一区二区三区在线观看 | 91精品欧美综合在线观看最新| 一区二区三区在线影院| 麻豆精品一区二区三区| 在线免费观看日韩欧美| 久久综合av免费| 亚洲丝袜自拍清纯另类| 亚洲黄色av一区| 国产91精品精华液一区二区三区| 3atv在线一区二区三区| 最新国产の精品合集bt伙计| 国产乱码精品一区二区三区av | 成人午夜私人影院| 欧美成人在线直播| 亚洲aⅴ怡春院| 91免费视频观看| 中文字幕不卡在线| 国产综合久久久久久鬼色| 91精品免费在线| 视频一区视频二区中文字幕| 日本高清不卡aⅴ免费网站| 中文无字幕一区二区三区| 狠狠色丁香久久婷婷综| 日韩三级伦理片妻子的秘密按摩| 亚洲免费观看高清| 国产酒店精品激情| ...av二区三区久久精品| 成人性生交大合| 国产精品免费视频一区| 高清成人在线观看| 欧美国产禁国产网站cc| 丰满放荡岳乱妇91ww| 国产亚洲欧美日韩俺去了| 国产精品一区一区| 国产精品欧美一区喷水| 成人污污视频在线观看| 中文成人av在线| 91天堂素人约啪| 亚洲女女做受ⅹxx高潮| 在线精品国精品国产尤物884a| 亚洲精品国产精华液| 色伊人久久综合中文字幕| 亚洲一区二区在线观看视频| 欧美性一区二区| 日韩精品免费视频人成| 欧美第一区第二区| 国产激情一区二区三区四区| 国产精品久久久久影院亚瑟| 91在线你懂得| 日日夜夜一区二区| 精品国产3级a| av电影一区二区| 亚洲最大的成人av| 日韩一区二区影院| 国产91丝袜在线播放| 亚洲永久免费视频| 日韩欧美在线网站| 精品在线视频一区| 欧美极品美女视频| 99久久精品国产毛片| 天天色天天操综合| 国产亚洲一区二区三区四区 | 综合久久久久久久| 欧美日韩三级一区二区| 久久精品国产亚洲aⅴ| 中文字幕的久久| 欧美三级资源在线| 国产在线精品视频| 亚洲精品久久7777| 精品处破学生在线二十三| 91在线视频免费观看| 久久99热99| 亚洲欧美日韩一区| 精品国产一区二区三区忘忧草| 97久久精品人人做人人爽50路| 偷拍一区二区三区四区| 久久久99精品免费观看| 欧美三级日本三级少妇99| 视频一区在线播放| 亚洲国产精品ⅴa在线观看| 色婷婷综合五月| 亚洲曰韩产成在线| 国产日韩欧美不卡在线| 欧美群妇大交群的观看方式 | 亚洲国产另类精品专区| 国产精品理伦片| 精品国产伦一区二区三区免费 | 亚洲国产精品久久久久秋霞影院 | 色婷婷久久久久swag精品| 国产精品资源在线看| 国产精品第四页| 久久久久综合网| 欧美精品在线一区二区| 91色乱码一区二区三区| 国产乱码一区二区三区| 蜜桃传媒麻豆第一区在线观看| 亚洲免费高清视频在线| 欧美国产精品劲爆| 久久久久99精品国产片| 精品国产三级a在线观看| 欧美日本视频在线| 欧美三级中文字幕| 欧美亚洲免费在线一区| 99久久伊人网影院| 国产成人av网站| 亚洲欧美二区三区| 亚洲第一成人在线| 成av人片一区二区| 欧美男生操女生| 久久99国产乱子伦精品免费| 欧美视频一区二区三区| 中文字幕一区二区三中文字幕| 免费三级欧美电影| 99riav一区二区三区| 欧美人与性动xxxx| 欧美激情综合五月色丁香| 久久久久成人黄色影片| 国产精品福利一区二区三区| 亚洲mv在线观看| 91精品国产乱| 成人免费毛片高清视频| 国产成人在线网站| 国产美女一区二区三区| 国产乱淫av一区二区三区 | 日韩欧美在线网站| 欧美一区二区三区四区五区 | 精品国产人成亚洲区| 精品国产91洋老外米糕| 国产欧美日韩三级| 久久精品亚洲国产奇米99| 久久人人爽爽爽人久久久| 国产欧美日韩激情| 亚洲精品大片www| 日韩精品欧美成人高清一区二区| 日本伊人色综合网| 国产sm精品调教视频网站| 99v久久综合狠狠综合久久| 欧美图区在线视频| 日韩一级黄色大片| 亚洲国产精品成人久久综合一区| 亚洲美女少妇撒尿| 日韩不卡手机在线v区| 国产精品自产自拍| 91麻豆高清视频| 欧美一区二区三区视频免费播放| 日韩免费电影一区| 国产精品美女久久久久久久久 | 97精品国产露脸对白| 国产91丝袜在线18| 欧美私人免费视频| 欧美伊人久久久久久午夜久久久久| 欧洲生活片亚洲生活在线观看| 欧美视频一区二区三区四区| 精品国产免费人成在线观看| 国产精品久久久久aaaa樱花| 最新不卡av在线| 激情都市一区二区| 成人污污视频在线观看| 午夜精品123| 综合中文字幕亚洲| 久久国产视频网| 色婷婷综合五月| 久久婷婷色综合| 亚洲大片在线观看| 岛国av在线一区| 日韩精品中午字幕| 亚洲一区二区在线播放相泽| 国产精品资源网| 91精品黄色片免费大全| 自拍偷拍国产精品| 天堂影院一区二区| 懂色av中文字幕一区二区三区| 在线观看视频一区| 日本一区二区免费在线观看视频| 亚洲一区二区在线播放相泽| 国产一区二区日韩精品| 国产精品乱人伦一区二区| 天堂一区二区在线免费观看| 三级欧美在线一区|