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

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

?? page1.cpp

?? 配套《網絡通信編程實用案例精選》源代碼。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
///////////////////////////////////////////////////////////////////////
// If this program works, it was written by Alexander Fedorov.
// If not, I don't know who wrote it.
// mailto:lamer2000@hotmail.com
// Home Page: http://members.xoom.com/lamer2000/
// This file is part of Alexf Dialer.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
///////////////////////////////////////////////////////////////////////

// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "Afd.h"
#include "Page1.h"
#include "PhoneNumberDlg.h"
#include "RunProgDlg.h"

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

extern CAfdApp theApp;

static HRASCONN hRasConn = NULL;

VOID WINAPI RasDialFunc(UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError)
{
	TRACE("RasDialFunc\n");
	if (unMsg != WM_RASDIALEVENT) TRACE("Strange event!\n");
	theApp.PostDialMessage(WM_DIAL_FUNC, rasconnstate, dwError);
	TRACE("RasDialFunc - exit\n");
}

BOOL SelectLVItem(CListCtrl & list, int item)
{
	LV_ITEM lvi;
	ZeroMemory(&lvi, sizeof(lvi));
	lvi.iItem = item;
	lvi.mask = LVIF_STATE;
	if (!list.GetItem(&lvi)) return FALSE;
	lvi.state |= LVIS_FOCUSED | LVIS_SELECTED;
	lvi.stateMask |= LVIS_FOCUSED | LVIS_SELECTED;
	if (!list.SetItem(&lvi)) return FALSE;
	return list.EnsureVisible(item, FALSE);
}


/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	m_StatusText = _T("");
	m_LastCallText = _T("");
	//}}AFX_DATA_INIT
}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_LIST_PHONES, m_PhoneList);
	DDX_Control(pDX, IDC_PROGRESS_TIMEOUT, m_ProgressTimeout);
	DDX_Control(pDX, IDC_COMBO_PROVIDER, m_Providers);
	DDX_Text(pDX, IDC_STATUS, m_StatusText);
	DDX_Text(pDX, IDC_LAST_CALL, m_LastCallText);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_WM_DESTROY()
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTTON_PROV_ADD, OnButtonProvAdd)
	ON_BN_CLICKED(IDC_BUTTON_PROV_EDIT, OnButtonProvEdit)
	ON_BN_CLICKED(IDC_BUTTON_PROV_DEL, OnButtonProvDel)
	ON_BN_CLICKED(IDC_BUTTON_TEL_ADD, OnButtonTelAdd)
	ON_BN_CLICKED(IDC_BUTTON_TEL_EDIT, OnButtonTelEdit)
	ON_BN_CLICKED(IDC_BUTTON_TEL_DEL, OnButtonTelDel)
	ON_BN_CLICKED(IDC_DIAL, OnDial)
	ON_CBN_SELCHANGE(IDC_COMBO_PROVIDER, OnSelchangeComboProvider)
	ON_NOTIFY(NM_CLICK, IDC_LIST_PHONES, OnClickListPhones)
	ON_MESSAGE(WM_DIAL_NEXT_PHONE, OnDialNextPhone)
	ON_MESSAGE(WM_DIAL_FUNC, OnDialFunc)
//	ON_BN_CLICKED(IDC_BUTTON_DIAL, OnButtonDial)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers
//初始化屬性一
BOOL CPage1::InitPropertyPage()
{
	CString sss;
	sss.LoadString(IDS_LIST1_COL1);
	m_PhoneList.InsertColumn(0, sss, LVCFMT_LEFT, 100);
	sss.LoadString(IDS_LIST1_COL2);
	//向電話號碼列表框插入初始化電話號碼
	m_PhoneList.InsertColumn(1, sss, LVCFMT_LEFT, 180);
	DWORD dwStyle = m_PhoneList.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
	dwStyle |= LVS_EX_FULLROWSELECT;
	m_PhoneList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
	m_ProgressTimeout.SetRange32(0, 100);
	m_ProgressTimeout.ShowWindow(SW_HIDE);
	//初始化一些變量
	bPhone = FALSE;
	bDialNow = FALSE;
	bInOnTimer = FALSE;
	bConnected = FALSE;
	bDialing = FALSE;
	bAuthenticationBegin = FALSE;
	bSpeedChecked = FALSE;
	//查詢連接狀態
	QueryConnections();
	//查詢目前的撥號情況
	QueryPhones(sCurrentProvider);
	//設定按鈕狀態
   	SetButtonsState();
	UpdateData(FALSE);
	//設定定時器
	uTimer = SetTimer(1, 1000, NULL);
	CheckExternalConnect();
	return ParseArgs(theApp.m_lpCmdLine);
}

BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	return TRUE;
}

void CPage1::OnDestroy() 
{
	KillTimer(uTimer);
	BOOL bTerminateWhenExit = atol(theApp.GetIniString(gchMain, gchEnableTerminateWhenExit, "1"));
	if (bTerminateWhenExit) HangUp(TRUE);
	CPropertyPage::OnDestroy();
}

void CPage1::OnTimer(UINT nIDEvent) 
{
	CPropertyPage::OnTimer(nIDEvent);
	// 如果定時器已經打開,則返回	if (bInOnTimer) return;
	//否則設定為TRUE
	bInOnTimer = TRUE;
	// 判斷是否正在撥號
	if (!bDialing)
	{
		if ((!bDialNow) && (!bConnected)) CheckExternalConnect();
		bInOnTimer = FALSE;
		return;
	}
	// 判斷是否已經連接上	if (bConnected)
	{
		CheckingConnected();
		bInOnTimer = FALSE;
		return;
	}
	if (bDialNow) CheckingDialing();
	else
	// 開始撥號
	StartDial();
	//定時器變量改為FALSE
	bInOnTimer = FALSE;
}

BOOL CPage1::OnSetActive() 
{
	return CPropertyPage::OnSetActive();
}

//增加新的連接
void CPage1::OnButtonProvAdd() 
{
	RasCreatePhonebookEntry(GetSafeHwnd(), sCurrentProvider);
	QueryConnections();
}

//編輯已有連接
void CPage1::OnButtonProvEdit() 
{
	RasEditPhonebookEntry(GetSafeHwnd(), NULL, sCurrentProvider);
	QueryConnections();
}

//刪除連接
void CPage1::OnButtonProvDel() 
{
	int i = AfxMessageBox(IDS_DELETE_CONNECTION, MB_YESNO | MB_ICONQUESTION);
	if (i != IDYES) return;
	//結構體
	typedef DWORD (WINAPI* RDE)
	(
		LPCTSTR lpszPhonebook,  // pointer to full path and filename of 
		LPCTSTR lpszEntry	   // pointer to an entry name to delete
	);
	// 載入動態庫
	HINSTANCE hLib = LoadLibrary(_T("RASAPI32.DLL"));
	if (NULL == hLib) return;
	RDE rde = (RDE) GetProcAddress(hLib, "RasDeleteEntryA");
	if (rde != NULL)
	{
		rde(NULL, sCurrentProvider);
		QueryConnections();
		QueryPhones(sCurrentProvider);
	}
	::FreeLibrary(hLib);
}

//增加撥號的號碼
void CPage1::OnButtonTelAdd() 
{
	CPhoneNumberDlg dlg;
	int nResponse = dlg.DoModal();
	if (nResponse != IDOK) return;
	UINT pn = atoi(theApp.GetIniString(sCurrentProvider, "Phones", "0"));
	pn++;
	theApp.SetIniString(sCurrentProvider, "Phones", L2S(pn));
	theApp.SetIniString(sCurrentProvider,"Phone" + L2S(pn), dlg.m_sNumber);
	theApp.SetIniString(sCurrentProvider,"Comment" + L2S(pn), dlg.m_sComments);
	theApp.SetIniString(sCurrentProvider,"LastPhone", L2S(pn));
	QueryPhones(sCurrentProvider);
}

void CPage1::OnButtonTelEdit() 
{
	CPhoneNumberDlg dlg;
	dlg.m_sNumber = GetPhoneListSelection();
	UINT lph = atoi(theApp.GetIniString(sCurrentProvider, "LastPhone", "1"));
	dlg.m_sComments = theApp.GetIniString(sCurrentProvider, "Comment" + L2S(lph), "");
	int nResponse = dlg.DoModal();
	if (nResponse != IDOK) return;
	UINT pn = atoi(theApp.GetIniString(sCurrentProvider, "Phones", "0"));
	CString sss;
	for (UINT i = 0; i < pn; i++)
	{
		sss = theApp.GetIniString(sCurrentProvider, "Phone" + L2S(i + 1), "-");
		if (sss != GetPhoneListSelection()) continue;
		sss = dlg.m_sNumber;
		theApp.SetIniString(sCurrentProvider, "Phone" + L2S(i + 1), sss);
		sss = dlg.m_sComments;
		theApp.SetIniString(sCurrentProvider, "Comment" + L2S(i + 1), sss);
		break;
	}
	QueryPhones(sCurrentProvider);
}

void CPage1::OnButtonTelDel() 
{
	int j = AfxMessageBox(IDS_DELETE_PHONE, MB_YESNO | MB_ICONQUESTION);
	if (j != IDYES) return;
	UINT pn = atoi(theApp.GetIniString(sCurrentProvider, "Phones", "0"));
	UINT lph = atoi(theApp.GetIniString(sCurrentProvider, "LastPhone", "1"));
	CString sss;
	for (UINT i = 0; i < pn; i++)
	{
		sss = theApp.GetIniString(sCurrentProvider, "Phone" + L2S(i + 1), "-");
		if (sss != GetPhoneListSelection()) continue;
		sss = theApp.GetIniString(sCurrentProvider, "Phone" + L2S(pn), "-");
		theApp.SetIniString(sCurrentProvider,"Phone" + L2S(i + 1), sss);
		pn--;
		if (lph > pn) lph = pn;
		theApp.SetIniString(sCurrentProvider, "Phones", L2S(pn));
		theApp.SetIniString(sCurrentProvider, "LastPhone", L2S(lph));
		break;
	}
	QueryPhones(sCurrentProvider);
}

//撥號
void CPage1::OnDial() 
{
	if (!bDialing)
	{
		bDialing = TRUE;
		theApp.LOG(CString("Dial:<" + sCurrentProvider) +
		CString("> using phone:<" + GetPhoneListSelection()) + ">.");
	}
	else
	{
		TRACE("OnHangup()\n");
		theApp.LOG("Hang Up button pressed.");
		bDialing = FALSE;
		HangUp(FALSE);
	}
   	SetButtonsState();
}

void CPage1::OnSelchangeComboProvider() 
{
	m_Providers.GetLBText(m_Providers.GetCurSel(), sCurrentProvider);
	m_StatusText = sCurrentProvider;
	theApp.SetIniString(gchMain, "LastEntry", sCurrentProvider);
	QueryPhones(sCurrentProvider);
	UpdateData(FALSE);
	theApp.NotifyProviderChanged();
}

void CPage1::OnClickListPhones(NMHDR* pNMHDR, LRESULT* pResult) 
{
	GetPhoneListSelection();
	*pResult = 0;
}

//查詢連接
BOOL CPage1::QueryConnections()
{
	DWORD cbBuf;
	DWORD cEntry;
	UINT  ndx;
	char  szMessage[256];
	m_Providers.ResetContent();
	sCurrentProvider = theApp.GetIniString(gchMain, "LastEntry", "");

	DWORD dwRet;
	LPBYTE lpBuffer;

	LPRASENTRYNAME lpRasEntry = new RASENTRYNAME;
	lpRasEntry->dwSize = sizeof(RASENTRYNAME);
	cbBuf = sizeof(RASENTRYNAME);
	//獲得所有連接
	dwRet = RasEnumEntries(NULL, NULL, lpRasEntry, &cbBuf, &cEntry);
	delete lpRasEntry;

	lpBuffer = new BYTE[cbBuf];
	lpRasEntry = (LPRASENTRYNAME)lpBuffer;
	lpRasEntry->dwSize = sizeof(RASENTRYNAME);
	dwRet = RasEnumEntries(NULL, NULL, lpRasEntry, &cbBuf, &cEntry);


	if (ERROR_BUFFER_TOO_SMALL == dwRet)
	{
		delete lpRasEntry;
		lpRasEntry = NULL;
		lpRasEntry = (LPRASENTRYNAME) new char[cbBuf];
		if (NULL != lpRasEntry)
		{
			ZeroMemory(lpRasEntry, cbBuf);
			lpRasEntry->dwSize = cbBuf;
			dwRet = RasEnumEntries(NULL, NULL, lpRasEntry, &cbBuf, &cEntry);
		}
		else
			dwRet = ERROR_NOT_ENOUGH_MEMORY;
	}
	if (0 != dwRet) // 其他錯誤
	{
		if (0 != RasGetErrorString((UINT)dwRet, szMessage, 256))
		{
			CString sss; sss.LoadString(IDS_RASCS_25);
			wsprintf((LPSTR)szMessage, sss);
		}
		m_StatusText = szMessage;
		UpdateData(FALSE);
	}
	if (0 == cEntry)
	{
		delete lpRasEntry ;
		return FALSE;
	}
	BOOL bSet = FALSE;
	if (0 == dwRet)  // 沒有錯誤
	{
		for (ndx = 0; ndx < cEntry; ndx++)
		{
			m_Providers.InsertString(ndx, lpRasEntry[ndx].szEntryName);
			if (lpRasEntry[ndx].szEntryName == sCurrentProvider)
			{
				m_Providers.SetCurSel(ndx);
				bSet = TRUE;
			}
		}
		if (!bSet)
		{
			m_Providers.SetCurSel(0);
			sCurrentProvider = lpRasEntry[0].szEntryName;
		}
	}
	delete lpRasEntry ;
	return TRUE;
}

//獲得號碼
BOOL CPage1::QueryPhones(CString sEntryName)
{
	m_PhoneList.DeleteAllItems();
	UINT pn = atoi(theApp.GetIniString(sEntryName, "Phones", "0"));
	if (1 == pn)
	{
		bPhone = LoadDefautPhoneNumber(sEntryName);
		pn = 1;
	}
	else
		bPhone = FALSE;
	if (!bPhone) return FALSE;
	CString sss;
	for (UINT i = 0; i < pn; i++)
	{
		sss = theApp.GetIniString(sEntryName, "Phone" + L2S(i + 1), "-");
		if (sss.IsEmpty()) continue;
		m_PhoneList.InsertItem(i, sss);
		sss = theApp.GetIniString(sEntryName, "Comment" + L2S(i + 1), "");
		if (!sss.IsEmpty())
		{
			LV_ITEM lvi;
			lvi.mask = LVIF_TEXT;
			lvi.iItem = i;
			lvi.iSubItem = 1;
			lvi.pszText = sss.GetBuffer(512);
			m_PhoneList.SetItem(&lvi);
			sss.ReleaseBuffer();
		}
	}
	UINT lpn = atoi(theApp.GetIniString(sEntryName, "LastPhone", "1"));
	if (lpn > pn) lpn = pn;
	SelectLVItem(m_PhoneList, lpn - 1);
	SetButtonsState();
	return TRUE;
}


BOOL CPage1::ParseArgs(CString sss)
{
	int i;
	CString aaa;
	BOOL bNeedReload = FALSE;
	aaa = sss;
	aaa.MakeUpper();
	i = aaa.Find("/?");
	if (i != -1)
	{
		AfxMessageBox(IDS_ARG_HELP);
	}
	aaa.MakeUpper();
	i = aaa.Find("/C\"");
	if (i != -1)
	{
		aaa = sss.Mid(i + 3, sss.GetLength());
		i = aaa.Find("\"");
		if (i > 0)
		{
			aaa = aaa.Mid(0, i);
			theApp.SetIniString(gchMain,"LastEntry", aaa);
			bNeedReload = TRUE;
		}
	}
	aaa = sss;
	aaa.MakeUpper();
	i = aaa.Find("/P");
	if (i != -1)
	{
		aaa = sss.Mid(i + 2, sss.GetLength());
		i = atol(aaa);
		if (i != 0)
		{
			theApp.SetIniString(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久99综合精品jk白丝| 国产麻豆9l精品三级站| 91捆绑美女网站| 日韩一区在线免费观看| 91看片淫黄大片一级| 一区二区三区精密机械公司| 欧美性一区二区| 蜜臀av一区二区三区| 久久看人人爽人人| 91热门视频在线观看| 亚洲一区中文日韩| 日韩一区二区视频| 成人免费视频一区| 亚洲一本大道在线| 精品国产青草久久久久福利| 成人国产视频在线观看| 亚洲在线视频免费观看| 欧美电影免费观看高清完整版在| 国产精品一区二区三区网站| 亚洲日本韩国一区| 欧美一区二区三区公司| 成人精品高清在线| 婷婷开心激情综合| 中文字幕av在线一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 天堂蜜桃91精品| 中文字幕第一区综合| 欧美日韩精品久久久| 国产成人综合亚洲91猫咪| 亚洲国产精品久久不卡毛片| 国产亚洲综合色| 精品视频全国免费看| 国产成都精品91一区二区三| 亚洲成av人片在线观看无码| 国产午夜精品在线观看| 欧美丰满少妇xxxbbb| gogogo免费视频观看亚洲一| 无码av中文一区二区三区桃花岛| 日本一区二区三区dvd视频在线| 久久综合视频网| 91福利国产精品| 国产福利91精品一区二区三区| 一级女性全黄久久生活片免费| 精品福利av导航| 精品污污网站免费看| 从欧美一区二区三区| 日本vs亚洲vs韩国一区三区二区| 亚洲日本免费电影| 国产欧美综合在线观看第十页| 欧美高清视频不卡网| 色婷婷久久久久swag精品| 成人午夜免费av| 国内一区二区视频| 蜜臀av一区二区在线免费观看| 亚洲国产日韩a在线播放性色| 中文av字幕一区| 久久久久久久一区| 精品国产乱码久久久久久浪潮 | 一区二区三区在线看| 久久精品一区二区| 日韩一二在线观看| 欧美美女视频在线观看| 91福利社在线观看| 色婷婷精品久久二区二区蜜臂av| 成人av在线播放网址| 成人app在线| 丰满白嫩尤物一区二区| 国产精品一区二区在线观看不卡| 久久精品99国产国产精| 美国毛片一区二区| 免费成人美女在线观看.| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧洲精品一区二区精品久久久 | 日韩国产欧美视频| 亚洲一区二区精品视频| 亚洲国产日日夜夜| 亚洲电影在线播放| 亚洲成av人影院在线观看网| 天天射综合影视| 天天做天天摸天天爽国产一区 | 成人在线综合网| 懂色av一区二区夜夜嗨| 成人视屏免费看| 9i在线看片成人免费| jlzzjlzz欧美大全| 91麻豆123| 欧美日韩性生活| 日韩欧美一区二区视频| 26uuuu精品一区二区| 国产欧美一区二区三区在线看蜜臀 | 亚洲国产精品久久久男人的天堂| 亚洲国产综合在线| 免费观看在线综合| 国产在线不卡视频| 91网站在线播放| 欧美日韩夫妻久久| 久久婷婷久久一区二区三区| 国产偷国产偷亚洲高清人白洁| 国产精品福利电影一区二区三区四区| 中文字幕巨乱亚洲| 亚洲一二三四在线| 精品一区二区三区在线播放视频| 国产精品2024| 色乱码一区二区三区88| 717成人午夜免费福利电影| 26uuu国产在线精品一区二区| 国产精品成人免费| 午夜精品免费在线| 国产成人在线视频播放| 在线视频亚洲一区| 精品剧情v国产在线观看在线| 国产精品网站在线| 午夜精品一区二区三区电影天堂| 韩国午夜理伦三级不卡影院| 色综合亚洲欧洲| 日韩午夜激情免费电影| 国产精品色一区二区三区| 五月婷婷另类国产| 波波电影院一区二区三区| 91精品国产麻豆| 国产日韩精品一区二区浪潮av | 精品在线播放免费| 日本精品一区二区三区四区的功能| 欧美一区二区播放| 日韩美女视频19| 韩国视频一区二区| 欧美日韩www| 国产精品你懂的| 麻豆一区二区三| 欧美综合视频在线观看| 久久人人爽人人爽| 丝袜诱惑制服诱惑色一区在线观看| 成人a免费在线看| 亚洲精品一区二区精华| 午夜视频一区在线观看| 99re热这里只有精品免费视频| 日韩欧美成人激情| 图片区小说区区亚洲影院| 99麻豆久久久国产精品免费 | 日本少妇一区二区| 色婷婷狠狠综合| 中日韩免费视频中文字幕| 狠狠狠色丁香婷婷综合久久五月| 欧美视频一区在线| 亚洲欧美日韩一区| 丁香一区二区三区| 久久久综合精品| 久久精品国产色蜜蜜麻豆| 欧美日韩一卡二卡| 亚洲精品v日韩精品| av成人老司机| 国产精品第13页| 成人午夜精品一区二区三区| 精品对白一区国产伦| 久久精品国产亚洲一区二区三区| 欧美日韩你懂得| 亚洲不卡av一区二区三区| 色呦呦一区二区三区| 亚洲免费观看高清完整| 成人精品视频网站| 中文字幕va一区二区三区| 成人午夜在线免费| 国产欧美久久久精品影院| 国产综合久久久久久久久久久久| 日韩一级大片在线观看| 久久99热99| 久久综合狠狠综合久久综合88| 美日韩一级片在线观看| 欧美变态凌虐bdsm| 奇米精品一区二区三区在线观看| 欧美精品 日韩| 美国三级日本三级久久99| 日韩欧美亚洲国产精品字幕久久久| 日本欧美一区二区三区| 欧美成人vr18sexvr| 国产在线精品一区二区夜色 | 日韩精品一区二区三区视频播放 | 成人免费高清在线| 国产精品的网站| 91福利视频网站| 日精品一区二区| 精品国产乱码久久久久久牛牛| 国产乱子伦视频一区二区三区 | 一区二区三区成人| 欧美三级日韩三级| 七七婷婷婷婷精品国产| 久久蜜桃一区二区| 99久久综合精品| 亚洲高清中文字幕| 欧美成人bangbros| 成人爽a毛片一区二区免费| 亚洲精品日韩综合观看成人91| 欧美日韩免费视频| 久久精品av麻豆的观看方式| 亚洲国产精品黑人久久久| 日本精品视频一区二区| 毛片av一区二区三区| 国产精品久久毛片| 欧美老肥妇做.爰bbww| 国产成人免费视频网站|