www.gusucode.com > 改函数包包装了GPRS通信的接口源码程序 > 改函数包包装了GPRS通信的接口源码程序/GPRS开发包/VC_DEMO_源代码/AddUserDlg1.cpp
// AddUserDlg1.cpp : implementation file // #include "stdafx.h" #include "vc_demo.h" #include "AddUserDlg1.h" #include <winsock2.h> #include "MainFrm.h" #include "wcomm_dll.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAddUserDlg dialog CAddUserDlg::CAddUserDlg(CWnd* pParent /*=NULL*/) : CDialog(CAddUserDlg::IDD, pParent) { //{{AFX_DATA_INIT(CAddUserDlg) m_edit1 = _T(""); //}}AFX_DATA_INIT } void CAddUserDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAddUserDlg) DDX_Control(pDX, IDC_DATETIMEPICKER2, m_time); DDX_Control(pDX, IDC_COMBO3, m_dscport); DDX_Control(pDX, IDC_COMBO2, m_dtuport); DDX_Control(pDX, IDC_COMBO1, m_status); DDX_Control(pDX, IDC_DATETIMEPICKER1, m_date); DDX_Control(pDX, IDC_IPADDRESS2, m_dscip); DDX_Control(pDX, IDC_IPADDRESS1, m_dtuip); DDX_Control(pDX, IDC_EDIT1, m_userid); DDX_Text(pDX, IDC_EDIT1, m_edit1); DDV_MaxChars(pDX, m_edit1, 11); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAddUserDlg, CDialog) //{{AFX_MSG_MAP(CAddUserDlg) ON_BN_CLICKED(IDOK, OnAdduserB) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAddUserDlg message handlers BOOL CAddUserDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here //给窗口添加自定义图标 HICON hIcon=LoadIcon (AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_Adduser)); SetIcon(hIcon,TRUE); //初始化登录时间控件 CTime stime( 2000, 01, 01, 01, 01, 01 ); CTime etime( 2030, 12, 31, 23, 59, 59 ); m_date.SetFormat("yyyy-MM-dd HH:mm:ss"); m_date.SetRange(&stime,&etime); m_date.SetTime(&CTime::GetCurrentTime ()); m_time.SetFormat("yyyy-MM-dd HH:mm:ss"); m_time.SetRange(&stime,&etime); m_time.SetTime(&CTime::GetCurrentTime ()); //初始化端口与在线状态控件 m_dtuport.SetWindowText ("5001"); m_dscport.SetWindowText ("5002"); m_status.SelectString (0,"在线"); //初始化IP地址控件 CString str1; str1=GetLocalIP(); m_dtuip.SetWindowText (str1); m_dscip.SetWindowText (str1); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAddUserDlg::PostNcDestroy() { // TODO: Add your specialized code here and/or call the base class delete this; } void CAddUserDlg::IPHightToLower(const char *IPstr, char *ipaddrstr) { CString iparry[4]; int i; int m=0,n; CString ipaddr; iparry[m].Empty (); ipaddr.Empty (); n=strlen(IPstr); for(i=0; i<n; ++i) { if(*IPstr == '.') { ++m; iparry[m].Empty (); } else { iparry[m] += *IPstr; } IPstr++; } ipaddr=iparry[3]; ipaddr+='.'; ipaddr+=iparry[2]; ipaddr+='.'; ipaddr+=iparry[1]; ipaddr+='.'; ipaddr+=iparry[0]; strcpy(ipaddrstr,(LPSTR)(LPCTSTR)ipaddr); return ; } CString CAddUserDlg::GetLocalIP() { char szHostname[100]; CString str1="",str2; struct hostent *pHostEnt; memset(szHostname,0,100); if( gethostname (szHostname, sizeof( szHostname ))!=SOCKET_ERROR) { //取本机的名称成功后,再根据名字取IP地址 pHostEnt = gethostbyname(szHostname); if ( pHostEnt != NULL ) { for(int i=0 ; pHostEnt->h_addr_list[i]!=NULL ; i++) { //转换IP地址为"xxx.xxx.xxx.xxx"形式的IP地址字符串 for(int j=0 ; j<pHostEnt->h_length ; j++) { if( j>0 ) { str1+="."; }//end if str2.Format ("%u", (unsigned int)((unsigned char*)pHostEnt->h_addr_list[i])[j]); str1+=str2; }//end for break; }//end for return str1; } else { //取不到本机的IP地址,返回空字符串 return str1; }//end if } else { //取不到本机的名字,返回空字符串 return str1; }//end if } void CAddUserDlg::OnAdduserB() { // TODO: Add your control notification handler code here int i; user_info userinfo; CString userid,logondate; CString updatestr; char dscip[17]; char dtuip[17]; char *iptmp; char port[10]; CString str1[7]; CMainFrame* pFram=(CMainFrame*)AfxGetMainWnd (); //取主框架的句柄 userid.Empty (); m_userid.GetWindowText (userid); if((!userid.IsEmpty ()) && (userid.GetLength ()==11)) //检查用户ID的有效性规则 { //检查通过,则赋值 memset(userinfo.m_userid ,0,12); memcpy(userinfo.m_userid ,(LPSTR)(LPCTSTR)userid, userid.GetLength()); iptmp=new char[17]; memset(dscip,0,17); memset(dtuip,0,17); memset(iptmp,0,17); memset(port,0,10); //给sinaddr赋值 m_dscip.GetWindowText (dscip,17); IPHightToLower(dscip, iptmp); //IP地址高低位反向 userinfo.m_sin_addr =inet_addr(iptmp);//将字符串形式的IP地址转为unsigned long类型 //给localaddr赋值 m_dtuip.GetWindowText (dtuip,17); IPHightToLower(dtuip, iptmp); userinfo.m_local_addr =inet_addr(iptmp); //给sinport赋值 m_dscport.GetWindowText (port,10); userinfo.m_sin_port =atoi(port); //给localport赋值 memset(port,0,10); m_dtuport.GetWindowText (port,10); userinfo.m_local_port =atoi(port); //给logondate赋值 logondate.Empty (); m_date.GetWindowText (logondate); memset(userinfo.m_logon_date ,0,20); memcpy(userinfo.m_logon_date ,(LPSTR)(LPCTSTR)logondate, logondate.GetLength()); //给updatetime赋值 updatestr.Empty (); m_time.GetWindowText (updatestr); memset(userinfo.m_update_time ,0,20); CTime update(atoi((LPSTR)(LPCTSTR)updatestr.Mid (0,4)), atoi((LPSTR)(LPCTSTR)updatestr.Mid (5,2)), atoi((LPSTR)(LPCTSTR)updatestr.Mid (8,2)), atoi((LPSTR)(LPCTSTR)updatestr.Mid (11,2)), atoi((LPSTR)(LPCTSTR)updatestr.Mid (14,2)), atoi((LPSTR)(LPCTSTR)updatestr.Mid (17,4))); *((time_t *)userinfo.m_update_time) =update.GetTime (); //取在线状态 userinfo.m_status =1; //调用控件添加用户接口 //i=AddOneUser(&userinfo); i=add_one_user(&userinfo); pFram->RefreshUserTable (0); delete []iptmp; } else { //检查失败,给出告警提示 AfxMessageBox ("用户ID不能为空或输入长度不正确!",0,0); } } void CAddUserDlg::OnCancel() { // TODO: Add extra cleanup here CMainFrame* pFram=(CMainFrame*)AfxGetMainWnd (); pFram->m_IsAdduserDlg =FALSE; CDialog::OnCancel(); }