?? phonepcdlg.cpp
字號:
// PhonePCDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PhonePC.h"
#include "PhonePCDlg.h"
#include "Serial.h"
//#include "SampleDialog.h"
#include "ReciveDialog.h"
#include "comSetting.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define TIMER_CHECK_DIALOG 100
#define TIMER_CHECKING 101
#define WM_USER_SEND_PHONE (WM_USER+220)
////////////////////////////////////////////////////////////////////////
CPhonePCDlg *pDlg;
////////////////////////////////////////////////////////////////////////
//=================================================================
// members for SYS
CString m_strSYS_0002_nAutoDely; // "01" [0,9]
CString m_strSYS_0004_sSMSCenter; // "..." [1,16]
CString m_strSYS_4000_bNotLocalAddZero; // 0/1
CString m_strSYS_0005_bForbidLongDistanceCall; // 00/01
CString m_strSYS_0006_sLCDContrast;
//=================================================================
// members for LOCAL
CString m_strLOCAL_1000_strLocalZone; // "..." [0,6]
CString m_strLOCAL_0003_nLocalMethod; // 00/01/02
//=================================================================
// members for PINSIM
CString m_strPINSIM_6000_bAutoLockPin; // 0/1
CString m_strPINSIM_6001_nPinLength; // "..." [4,8]
CString m_strPINSIM_6002_strOriginalPin; // "..." [4,8]
CString m_strPINSIM_6004_strFixedPin; // "..." [4,8]
CString m_strPINSIM_6005_bUseRandomPin; // 0/1
CString m_strPINSIM_7000_bLockSim; // 0/1
CString m_strPINSIM_7001_strLockSimNum; // "..." 定長20 個字節(jié)
//=================================================================
// members for Lock
CString m_strLOCK_7002_bLockProvider; // 0/1
CString m_strLOCK_7003_nProvider; // "..." [0,1]
CString m_strLOCK_8000_bLockRegion; // 0/1
CString m_strLOCK_8002_bAutoLockRegion; // 0/1
CString m_strLOCK_8001_nRegionNum; // "..." [4,8]
CString m_strLOCK_8003_strLockRegion; // "..." [4,8]*4
//=================================================================
// members for Direct Table
CString m_AryDIRECT_2020_strDirectTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符數(shù)組 0-9,*,#
//=================================================================
// members for Forbid Table
CString m_AryFORBID_3020_strForbidTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符數(shù)組 0-9,*,#
//=================================================================
// members for REFUSE
CString m_strREFUSE_5000_bRefuseType; // 0/1
CString m_AryREFUSE_5020_strRefuseTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符數(shù)組 0-9
//=================================================================
// members for Local Mobile Sect
// int nLocalTableLength; // < 400
CStringArray m_ArySECT_4400_strLocalTable; // 字符數(shù)組 0-9,*,#
//=================================================================
// members for Local User Mobile Sect
CString m_ArySECT_4420_strUserLocalTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符數(shù)組 0-9,*,#
//=================================================================
// members for IP
CString m_AryIP_9001_strIPRuleTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符數(shù)組 0-9,*,#
//=================================================================
////////////////////////////////////////////////////////////////////////
CSerial AtCom;
////////////////////////////////////////////////////////////////////////
int nComPort,nBaudrate;
BOOL m_nSysinfoCom = FALSE;
BOOL m_nLocalCom = FALSE;
BOOL m_nPinSimCom = FALSE;
int nSendComplete = 0;
int m_nRet = 0;
/////////////////////////////////////////////////////////////////////////////
// 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()
/////////////////////////////////////////////////////////////////////////////
// CPhonePCDlg dialog
CPhonePCDlg::CPhonePCDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPhonePCDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPhonePCDlg)
m_nRadioValue = -1;
m_LongDistance = -1;
m_nSysinfo = CONTROL_NO;
m_nLocal = CONTROL_NO;
m_nPinSim = CONTROL_NO;
m_nLockPhone = CONTROL_NO;
m_nEnableDial = CONTROL_NO;
m_nDisableDial = CONTROL_NO;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
pDlg = this;
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CPhonePCDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPhonePCDlg)
DDX_Control(pDX, IDC_LCDCONTRAST, m_LCDCon);
DDX_Control(pDX, IDC_EDIT_NETNUMBER, m_NetPhoneNumber);
DDX_Control(pDX, IDC_COMBO_TIME, m_ComboDelay);
DDX_Control(pDX, IDC_STATIC_TEXT, m_str);
DDX_Control(pDX, IDC_TREECTR, m_TreeCtrl);
DDX_Radio(pDX, IDC_DISTANCECALL, m_LongDistance);
DDX_Control(pDX, IDC_GROP_BOX, m_Groupbox);
//}}AFX_DATA_MAP
DDX_Radio(pDX, IDC_ADDZERO, m_nRadioValue);
// DDX_Radio(pDX,ID_RADIO_BUTTONRADOM,m_nAutoPin);
}
BEGIN_MESSAGE_MAP(CPhonePCDlg, CDialog)
//{{AFX_MSG_MAP(CPhonePCDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(NM_CLICK, IDC_TREECTR, OnClickTreectr)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREECTR,OnSelchanged)
ON_CBN_SELCHANGE(ID_COMBO_WAY, OnCbnSelChange)
ON_BN_CLICKED(IDOK, OnWritePhone)
ON_BN_CLICKED(IDC_ADDZERO, OnAddzero)
ON_WM_TIMER()
ON_CBN_SELCHANGE(ID_COMBO_OPERTORNUM, OnOperSelChange)
ON_BN_CLICKED(IDC_BT_IMPORT, OnBtImport)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_USER_SEND_PHONE,OnSendPhone)
ON_EN_CHANGE(ID_MYEDT, OnChangeEdit)
ON_BN_CLICKED(ID_RADIO_BUTTONAUTO, OnAutoLock)
ON_BN_CLICKED(ID_RADIO_BUTTONPIN, OnAutoLock)
ON_BN_CLICKED(ID_RADIO_BUTTONRADOM, OnUseRandom)
ON_BN_CLICKED(ID_RADIO_BUTTONNORADOM, OnUseRandom)
ON_BN_CLICKED(ID_RADIO_BUTTONSIMPHONE, OnLockSim)
ON_BN_CLICKED(ID_RADIO_BUTTONSIMNO, OnLockSim)
ON_BN_CLICKED(ID_RADIOLOCKOPERATOR, OnLockProvider)
ON_BN_CLICKED(ID_RADIOLOCKOPERATORNO, OnLockProvider)
ON_BN_CLICKED(ID_RADIOLOCKCELL, OnLockCell)
ON_BN_CLICKED(ID_RADIOLOCKCELLNO, OnLockCell)
//ID_RADIOLOCKCELL
// ID_RADIOLOCKCELL
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPhonePCDlg message handlers
CImageList Cil1,Cil2;//大小圖標像列表
char * CJ[12]={"系統(tǒng)參數(shù)","本地區(qū)號","PIN碼與SIM卡","話機鎖定","直撥號段","禁撥號段",
"呼入限制","本地手機號段","IP撥號設(shè)置","音頻設(shè)置","提示信息","話機數(shù)據(jù)管理"};//根數(shù)據(jù)名稱
char strConfigfile[300];
BOOL CPhonePCDlg::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
// else
// return FALSE;
/////////////////////////////////////////////////////////////////////////////////////
#if 1
Cil1.Create(16,16,ILC_COLOR,2,2);
Cil1.Add(AfxGetApp()->LoadIcon(IDI_PM));
Cil1.Add(AfxGetApp()->LoadIcon(IDI_CJ));
m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//設(shè)置圖象列表
DWORD dwStyles=GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);//獲取樹控制原風格
dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyles);//設(shè)置風格
// wchar_t * CJ[4]={L"玉溪卷煙廠",L"云南卷煙廠",L"沈陽卷煙廠",L"成都卷煙廠"};//根數(shù)據(jù)名稱
// wchar_t * PM[4][5]={
char * PM[4][5]={
{"紅梅一","紅梅二","紅梅三","紅梅四","紅梅五"},//產(chǎn)品數(shù)據(jù)項
{"白梅一","白梅二","白梅三","白梅四","白梅五"},
{"綠梅一","綠梅二","綠梅三","綠梅四","綠梅五"},
{"青梅一","青梅二","青梅三","青梅四","青梅五"}};
int i;
HTREEITEM hRoot,hCur;//樹控制項目句柄
TV_INSERTSTRUCT TCItem;//插入數(shù)據(jù)項數(shù)據(jù)結(jié)構(gòu)
// for(i=0;i<12;i++)
// {
TCItem.hParent=TVI_ROOT;//增加根項
TCItem.hInsertAfter=TVI_LAST;//在最后項之后
// TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//設(shè)屏蔽
TCItem.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//設(shè)屏蔽
TCItem.item.pszText="數(shù)據(jù)管理";
TCItem.item.lParam=0;//序號
TCItem.item.iImage=0;//正常圖標
TCItem.item.iSelectedImage=1;//選中時圖標
hRoot=m_TreeCtrl.InsertItem(&TCItem);//返回根項句柄
// }
//////////////////////////////////////
//#if 0
for(i=0;i<12;i++){//增加各廠家
TCItem.hParent=hRoot;
// TCItem.hParent=TVI_ROOT;
TCItem.item.pszText=CJ[i];
TCItem.item.lParam=(i+1)*10;//子項序號
hCur=m_TreeCtrl.InsertItem(&TCItem);
/* for(j=0;j<5;j++){//增加各產(chǎn)品
TCItem.hParent=hCur;
TCItem.item.pszText=PM[i][j];
TCItem.item.lParam=(i+1)*10+(j+1);//子項序號
m_TreeCtrl.InsertItem(&TCItem);
}
m_TreeCtrl.Expand(hCur,TVE_EXPAND);//展開樹*/
}
#endif
m_TreeCtrl.Expand(hRoot,TVE_EXPAND);//展開上一級樹
/////////////////////////////////////////////////////////////////////////////////////
/*
RECT rect,wrect;
RECT *prect;
CString str1 = L"系統(tǒng)參數(shù)";
m_Groupbox.SetWindowText(str1);
prect = &wrect;
::GetWindowRect(m_Groupbox.m_hWnd,prect); //得到主對話框的
rect.left = (prect->right + prect->left)/2;
rect.right =rect.left + 40;
rect.top = (prect->bottom + prect->top)/2;
rect.bottom = rect.top + 20;
m_MyEdit.CreateEx(WS_EX_CLIENTEDGE, // 3D-border外觀
_T("EDIT"),
NULL,
ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_CHILD,
rect, this,
ID_MYEDT);//生成edit控件
m_MyEdit.ShowWindow(SW_SHOW); //顯示控件
m_MyEdit.SetFocus(); //設(shè)置焦點
rect.left = (prect->right + prect->left)/2 +50;
rect.right =rect.left + 100;
rect.top = (prect->bottom + prect->top)/2;
rect.bottom = rect.top + 20;
m_Diatime.Create("速撥延時設(shè)置",WS_CHILD|WS_VISIBLE|SS_NOTIFY,rect,this,ID_STATIC_DIA);
CFont* p_font = NULL;
p_font = m_str.GetFont();
m_Diatime.SetFont(p_font,TRUE);
m_Diatime.ShowWindow(SW_SHOW);
*/
// m_Diatime.SetFocus();
// TODO: Add extra initialization here
// CString strCurrentPath;
if(!AtCom.Open(nComPort,nBaudrate))
{
CString Mestr;
Mestr.Format("不能打開串口,串口號 = %d,波特率 = %d",nComPort,nBaudrate);
AfxMessageBox(Mestr);
}
char sTestplan[300];
CString m_strSYS_4000_bNotLocalAddZero; // 0/1
CString m_strSYS_0005_bForbidLongDistanceCall; // 00/01
GetCurrentDirectory(300,strCurrentPath);
sprintf(strConfigfile,"%s\\config.ini",strCurrentPath);
GetPrivateProfileString("SYSinfo","DelayTime","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
m_strSYS_0002_nAutoDely = sTestplan;
GetPrivateProfileString("SYSinfo","NetNumber","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
m_strSYS_0004_sSMSCenter = sTestplan;
GetPrivateProfileString("SYSinfo","OutZero","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
m_strSYS_4000_bNotLocalAddZero = sTestplan;
GetPrivateProfileString("SYSinfo","ForBiden","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
m_strSYS_0005_bForbidLongDistanceCall = sTestplan;
GetPrivateProfileString("SYSinfo","LCDConTrast","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
m_strSYS_0006_sLCDContrast = sTestplan;
for(i=0;i<10;i++)
{
char str2[8];
sprintf(str2,"%d",i);
m_ComboDelay.AddString(str2);
m_ComboDelay.SetItemData(i,i);
}
int DelaySec;
int bAddZero,bLonDistance;
DelaySec = atoi(m_strSYS_0002_nAutoDely);
m_ComboDelay.SetCurSel(DelaySec);
m_NetPhoneNumber.SetWindowText(m_strSYS_0004_sSMSCenter);
/*
// m_nRadioValue = 0;
// bAddZero = atoi(m_strSYS_4000_bNotLocalAddZero);
bAddZero = 1;
((CButton *)GetDlgItem(IDC_ADDZERO))->SetCheck(FALSE);
// bLonDistance = atoi(m_strSYS_0005_bForbidLongDistanceCall);
bLonDistance = 1;
((CButton *)GetDlgItem(IDC_DISTANCECALL))->SetCheck(bLonDistance);
*/
bAddZero = atoi(m_strSYS_4000_bNotLocalAddZero);
if(bAddZero)
((CButton *)GetDlgItem(IDC_ADDZERO))->SetCheck(TRUE);
else
((CButton *)GetDlgItem(IDC_NOADDZERO))->SetCheck(TRUE);
bLonDistance = atoi(m_strSYS_0005_bForbidLongDistanceCall);
if(bLonDistance)
((CButton *)GetDlgItem(IDC_DISTANCECALL))->SetCheck(TRUE);
else
((CButton *)GetDlgItem(IDC_NODISTANCECALL))->SetCheck(TRUE);
m_LCDCon.SetWindowText(m_strSYS_0006_sLCDContrast);
UpdateData(TRUE);
m_nSysinfo = CONTROL_CREATED;
return TRUE; // return TRUE unless you set the focus to a control
}
void CPhonePCDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -