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

📄 pppserverdlg.cpp

📁 服务端: 这是一个完整的基于Wince 4.1图形图象,网络通讯(C/S)模式下的商用程序源代码包.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  BOOL  WriteDirectory(CString   dd)   
  {   
    HANDLE fFile;   
    WIN32_FIND_DATA   fileinfo;   
    CStringArray   m_arr;   
    BOOL   tt;   
    int   x1   =   0;   
    CString   tem   =  _T("");   
    
    
    fFile   =   FindFirstFile(dd,&fileinfo);   
//	if(fFile==INVALID_HANDLE_VALUE)
//	{
//		return FALSE;
//	}
    
    //   if   the   file   exists   and   it   is   a   directory   
    if(fileinfo.dwFileAttributes   ==   FILE_ATTRIBUTE_DIRECTORY)   
    {   
      //     Directory   Exists   close   file   and   return   
      FindClose(fFile);   
      return   TRUE;   
    }   
    m_arr.RemoveAll();   
    for(x1   =   0;   x1   <   dd.GetLength();   x1++   )   
    {   
      if(dd.GetAt(x1)   !=  _T('\\'))   
        tem   +=   dd.GetAt(x1);   
      else   
      {   
        m_arr.Add(tem);   
        tem   +=  _T("\\");   
      }   
      if(x1   ==   dd.GetLength()-1)   
          m_arr.Add(tem);   
    }   
    
    
    //   Close   the   file   
    FindClose(fFile);   
    
    
    //   Now   lets   cycle   through   the   String   Array   and   create   each   directory   in   turn   
    for(x1   =   1;   x1   <   m_arr.GetSize();   x1++)   
    {   
      tem   =   m_arr.GetAt(x1);   
      tt   =   CreateDirectory(tem,NULL);   
    
      //   If   the   Directory   exists   it   will   return   a   false   
      if(tt)   
        SetFileAttributes(tem,FILE_ATTRIBUTE_NORMAL);   
      //   If   we   were   successful   we   set   the   attributes   to   normal   
    }   
    //     Now   lets   see   if   the   directory   was   successfully   created   
    fFile   =   FindFirstFile(dd,&fileinfo);   
    
    m_arr.RemoveAll();   
    if(fileinfo.dwFileAttributes   ==   FILE_ATTRIBUTE_DIRECTORY)   
    {   
      //     Directory   Exists   close   file   and   return   
      FindClose(fFile);   
      return   TRUE;   
    }   
    else   
    {   
      //   For   Some   reason   the   Function   Failed     Return   FALSE   
      FindClose(fFile);   
      return   FALSE;   
    }   
  }  
/////////////////////////////////////////////////////////////////////////////
// CPPPServerDlg dialog

CPPPServerDlg::CPPPServerDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPPPServerDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPPPServerDlg)
	m_delaytime = 0;
	m_cur_filename = _T("");
	m_sharefile_flag = FALSE;
	m_speed = 0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPPPServerDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPPPServerDlg)
	DDX_Control(pDX, IDC_TYPE_COMBO, m_type_combobox);
	DDX_Control(pDX, IDC_POSITION_COMBO, m_position_combobox);
	DDX_Control(pDX, IDC_PLAYTABLE_LIST, m_list);
	DDX_Control(pDX, IDC_MESS_LIST, m_mess_list);
	DDX_Control(pDX, IDC_ACTIONOUT_COMBO, m_actionout_combobox);
	DDX_Control(pDX, IDC_ACTIONIN_COMBO, m_actionin_combobox);
	DDX_Text(pDX, IDC_DELAYTIME_EDIT, m_delaytime);
	DDV_MinMaxLong(pDX, m_delaytime, 0, 60000);
	DDX_Text(pDX, IDC_FILENAME_EDIT, m_cur_filename);
	DDX_Check(pDX, IDC_SHAREFILE_CHECK, m_sharefile_flag);
	DDX_Text(pDX, IDC_SPEED_EDIT, m_speed);
	DDV_MinMaxLong(pDX, m_speed, 0, 10000);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPPPServerDlg, CDialog)
	//{{AFX_MSG_MAP(CPPPServerDlg)
	ON_COMMAND(ID_ABOUT_HELP, OnAboutHelp)
	ON_WM_DESTROY()
	ON_WM_TIMER()
	ON_COMMAND(ID_STOPALL_CONTROL, OnStopallControl)
	ON_COMMAND(ID_AUTORUN_REG_OPTION, OnAutorunRegOption)
	ON_COMMAND(ID_EXIT_FILE, OnExitFile)
	ON_COMMAND(ID_SHOWHIDE_DEMODLG_CONTROL, OnShowhideDemodlgControl)
	ON_COMMAND(ID_SHOWHIDE_MAINDLG_CONTROL, OnShowhideMaindlgControl)
	ON_MESSAGE(WM_HOTKEY,OnHotKey)	
	ON_MESSAGE(WM_SHOW_MAINWND_MESSAGE,OnShowMainWnd)
	ON_COMMAND(ID_SETPOS_OPTION, OnSetposOption)
	ON_COMMAND(ID_SETSIZE_OPTION, OnSetsizeOption)
	ON_COMMAND(ID_NEW_FILE, OnNewFile)
	ON_COMMAND(ID_OPEN_FILE, OnOpenFile)
	ON_COMMAND(ID_SAVE_FILE, OnSaveFile)
	ON_COMMAND(ID_SAVEAS_FILE, OnSaveasFile)
	ON_COMMAND(ID_COPY_EDIT, OnCopyEdit)
	ON_COMMAND(ID_CUT_EDIT, OnCutEdit)
	ON_COMMAND(ID_PASTE_EDIT, OnPasteEdit)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_INSERT_BUTTON, OnInsertButton)
	ON_BN_CLICKED(IDC_SAVE_BUTTON, OnSaveButton)
	ON_BN_CLICKED(IDC_FIRST_BUTTON, OnFirstButton)
	ON_BN_CLICKED(IDC_PREV_BUTTON, OnPrevButton)
	ON_BN_CLICKED(IDC_NEXT_BUTTON, OnNextButton)
	ON_BN_CLICKED(IDC_LAST_BUTTON, OnLastButton)
	ON_BN_CLICKED(IDC_OPEN_BUTTON, OnOpenButton)
	ON_NOTIFY(NM_CLICK, IDC_PLAYTABLE_LIST, OnClickPlaytableList)
	ON_NOTIFY(NM_DBLCLK, IDC_PLAYTABLE_LIST, OnDblclkPlaytableList)
	ON_BN_CLICKED(IDC_CANCEL_BUTTON, OnCancelButton)
	ON_BN_CLICKED(IDC_CLEAR_BUTTON, OnClearButton)
	ON_CBN_SELCHANGE(IDC_TYPE_COMBO, OnSelchangeTypeCombo)
	ON_CBN_EDITCHANGE(IDC_TYPE_COMBO, OnEditchangeTypeCombo)
	ON_COMMAND(ID_MOVEUP_EDIT, OnMoveupEdit)
	ON_COMMAND(ID_MOVEDOWN_EDIT, OnMovedownEdit)
	ON_COMMAND(ID_PLAYONE_CONTROL, OnPlayoneControl)
	ON_COMMAND(ID_PLAYALL_CONTROL, OnPlayallControl)
	ON_BN_CLICKED(IDC_DELONE_BUTTON, OnDeloneButton)
	ON_COMMAND(ID_AUOTPARA_CONTROL, OnAuotparaControl)
	ON_COMMAND(ID_REGISTER_OPTION, OnRegisterOption)
	ON_MESSAGE(WM_AUTORUN,OnAutoRun)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPPPServerDlg message handlers

BOOL CPPPServerDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	// 自己设置对话框图标。MFC不会为对话框应用程序设置它
    //m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME_BIGICON);
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here

	m_main_dlg=this;
	m_software_registered_flag=FALSE;//NOT REGISTER

//	AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//	CenterWindow(GetDesktopWindow());	// center to the hpc screen
	//load system parameter
     TCHAR exeFullPath[MAX_PATH];
     int len2 = GetModuleFileName(NULL,exeFullPath,MAX_PATH);

     CString strDir(exeFullPath);
     strDir.TrimLeft();
     strDir.TrimRight();

     CString strTemp = strDir.Left(strDir.GetLength() - 3);
     strDir = strTemp;
     strDir += _T("ini");
     m_ini_pathname = strDir;
	 //
	 {//=========================================
	
	 m_keycode_pathname=strTemp;
	 m_keycode_pathname=m_keycode_pathname+_T("DAT");
	//////////////////////

  }
	 /////////////////////////////////////////
     //WAY 1
	 FILE *fp;
	 fp=_tfopen(m_ini_pathname,L"rb");
	 if(!fp)
	 {
      m_system_para.m_show_startx=0;
	  m_system_para.m_show_starty=0;
	  m_system_para.m_show_width=320;
      m_system_para.m_show_height=240;
	 
	  m_system_para.m_auto_run_flag=0;
	 // m_system_para.m_watchdog_flag=0;
	  //wcscpy(m_system_para.m_autorun_tabfile,_T(""));
	  wcscpy(m_system_para.m_autorun_tabfile,GetCurDir());
	  wcscat(m_system_para.m_autorun_tabfile,_T("\\PLAYTAB.TAB"));
	  wcscpy(m_system_para.m_save_pathname,GetCurDir());
	  wcscat(m_system_para.m_save_pathname,_T("\\SAVE"));
	  _tcscpy(m_system_para.software_SN,_T("")); 
	  m_system_para.hour=12;
	  m_system_para.minute=0;
	  m_system_para.second=0;
	  
	 }
	 else
	 {	   
	   //x
	   if(fread((char*)&m_system_para.m_show_startx,1,sizeof(SYSTEM_PARAMETER),fp)!=sizeof(SYSTEM_PARAMETER))
	   {
		    m_system_para.m_show_startx=0;
	        m_system_para.m_show_starty=0;
	        m_system_para.m_show_width=320;
            m_system_para.m_show_height=240;

	        
		    m_system_para.m_auto_run_flag=0;
		//	m_system_para.m_watchdog_flag=0;
	        //wcscpy(m_system_para.m_autorun_tabfile,_T(""));
			wcscpy(m_system_para.m_autorun_tabfile,GetCurDir());
			wcscat(m_system_para.m_autorun_tabfile,_T("\\PLAYTAB.TAB"));
			wcscpy(m_system_para.m_save_pathname,GetCurDir());
			wcscat(m_system_para.m_save_pathname,_T("\\SAVE"));
			_tcscpy(m_system_para.software_SN,_T("")); 
			m_system_para.hour=12;
	        m_system_para.minute=0;
	        m_system_para.second=0;
	   }
       fclose(fp);
	 }	
	 //set timer for reset software
	 SetTimer(1,5000,NULL);
	 //set timer for software protected
	{
	 DWORD f,n,a;
	 if(GetSoftProtectedRegistered(f,n,a))
	 {	  
	  if(f>=1||n>a)
	  {
		 //软件免费试用到期
		 m_software_protected_flag=TRUE;
	  }
	  else 
	  {
	     m_software_protected_flag=FALSE;
		 if(f==0&&a>0&&n<a)//继续试用
	     SetTimer(2,60000,NULL);
         // 
	  }
	 }
	 else//
	 {
       //软件可免费使用1个月 	  
	  if(SetSoftProtectedRegistered(6))
	  {
		  m_software_protected_flag=FALSE;//..工程安装人员应该重新启动软件.使新的软件起效
		  SetTimer(2,60000,NULL);
	  }
	  else
	  {
         m_software_protected_flag=TRUE;//出错,软件保护         

	  }
	 }

	}
	 //
	 m_reset_begin_time=m_reset_end_time=GetTickCount();

	CString serial;
	//serial=GetSerialNumberFromKernelIoControl();
	serial=GetSerialNumber(m_keycode_pathname);
	
	//m_system_para
	CString new_code,old_code;
	old_code=m_system_para.software_SN;
	new_code=GetSoftWareRegisterCode(serial);
	if(new_code==old_code)
	{
		//GetDlgItem(IDC_REGISTER_STATIC)->SetWindowText(TEXT("Registered"));
		m_software_registered_flag=TRUE;
	}
	else
	{
	    //GetDlgItem(IDC_REGISTER_STATIC)->SetWindowText(TEXT("Unregistered"));
		m_software_registered_flag=FALSE;
	}	

	//建立服务器端socket
	if((serverSocket=socket(AF_INET, SOCK_STREAM, 0))==INVALID_SOCKET)
	{
	//	printf("Create socket error\n");
		//CString str;
		ShowMessage(L"Create socket error");
		//m_meslist.AddString(str);
		//WSACleanup();
		return FALSE;
	}
    BOOL val = TRUE;//???
    //SO_REUSEADDR选项就是可以实现端口重绑定的 SO_REUSEADDR SO_EXCLUSIVEADDRUSE
    if(setsockopt(serverSocket,SOL_SOCKET,SO_REUSEADDR ,(char *)&val,sizeof(val))!=0)
    {
        //printf("error!setsockopt failed!\n");
		ShowMessage(L"setsockopt failed!");
		closesocket(serverSocket);
        return FALSE;
    }   

	//2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,
	//不经历TIME_WAIT的过程: 
    BOOL bDontLinger = FALSE; 
    if(setsockopt(serverSocket,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL))!=0)
	{
		ShowMessage(L"setopt-error-5");
       closesocket(serverSocket);
        return FALSE;
	}
	//填充服务器端SOCKADDR_IN结构
	serverAddr.sin_family=AF_INET;
	serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);
	serverAddr.sin_port=htons(USER_PORT);
    
	//将服务器端socket与指定IP地址和端口绑定
	if(bind(serverSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
	{
		int temp;
		temp=WSAGetLastError();
		ShowMessage(L"Bind error!");
		closesocket(serverSocket);
		//WSACleanup();
		return FALSE;
	} 	

	//指定服务器端serverSocket为监听模式point to point
	if(listen(serverSocket,1)!=0)
	{
		//printf("Listen error!\n");
	    ShowMessage(L"Listen error!");
		closesocket(serverSocket);
		//WSACleanup();
		return FALSE;
	}
   //设置异步方式
	DWORD ul=1;
	ioctlsocket(serverSocket,FIONBIO,&ul);

	//printf("Let's begin!\n");
	clientAddrLen=sizeof(clientAddr);
	//start thread server accept socket
	m_server_run_flag=true;
    
	m_server_thread_handle=CreateThread(NULL,0,
		RunServerThread,this,CREATE_SUSPENDED,&m_server_threadid);
	if(!m_server_thread_handle)
	{
		m_server_run_flag=false;
		ShowMessage(L"Create Server Thread failed!");
		//m_meslist.AddString(L"Create Server Thread failed!");
		return FALSE;
	}
	else
	{      
	  // m_all_run_flag=true;
	   if(ResumeThread(m_server_thread_handle)==0xFFFFFFFF)
	   {
         ShowMessage(L"Run Server Thread failed!");
		//  m_meslist.AddString(L"Run Server Thread failed!");
		 m_server_run_flag=false;
		 return FALSE;
	   }
	   else
	   {
         ShowMessage(L"Run Server Thread OK!");
	   }
	   //CloseHandle((HANDLE)m_server_thread_handle);
	}
   
	//watchdog start	
	
	//取的系统所有字体
	HDC hdc;
   // INT i, rc;   
    //Enumerate the available fonts.
    hdc =::GetDC(this->GetSafeHwnd());
	//
	m_all_logfont.RemoveAll();

	EnumFontFamilies ((HDC)hdc, (LPTSTR)NULL, 
		GetSystemAllFontname,(LPARAM)&m_all_logfont);

	::ReleaseDC (this->GetSafeHwnd(), hdc);
	
	
   // 寻找HotKey对应的原子是否存在于原子列表
	//int id;
	ATOM m_atom;
   if((m_atom=GlobalFindAtom(L"Hotkey CTRL+ALT+F12")) == 0)
   {
	// 获取当前窗口句柄
    HWND handle = GetSafeHwnd();
	//显示主窗体
   // 如果没有存在于原子列表,则创建一个原子
    MY_HOTKEY = GlobalAddAtom(L"Hotkey CTRL+ALT+F12"); 
    //注册全局热键Ctrl + Alt + F12
    if(RegisterHotKey(handle, MY_HOTKEY, MOD_ALT|MOD_CONTROL, VK_F12))
		m_hotkey_flag=true;
	else
		m_hotkey_flag=false;
   }
   else
   {   
	   //MessageBox(L"CTRL+ALT+F12 HOT KEY has been Registed",L"System Error",MB_OK|MB_ICONERROR);
	 GlobalDeleteAtom(m_atom);
	   // 获取当前窗口句柄
    HWND handle = GetSafeHwnd();
	//显示主窗体
   // 如果没有存在于原子列表,则创建一个原子
    MY_HOTKEY = GlobalAddAtom(L"Hotkey CTRL+ALT+F12"); 
    //注册全局热键Ctrl + Alt + F12
    if(RegisterHotKey(handle, MY_HOTKEY, MOD_ALT|MOD_CONTROL, VK_F12))
		m_hotkey_flag=true;
	else
		m_hotkey_flag=false;
	   //m_hotkey_flag=false;
   }
   //else // 如果HotKey已经存在于原子列表,则终止程序运行   
   //PostQuitMessage(0);
   ATOM m_atom1;
   if((m_atom1=GlobalFindAtom(L"Hotkey CTRL+ALT+F11")) == 0)
   {
	// 获取当前窗口句柄
    HWND handle = GetSafeHwnd();
	//显示主窗体
   // 如果没有存在于原子列表,则创建一个原子
    MY_DEMO_HOTKEY = GlobalAddAtom(L"Hotkey CTRL+ALT+F11"); 
    //注册全局热键Ctrl + Alt + F12
    if(RegisterHotKey(handle, MY_DEMO_HOTKEY, MOD_ALT|MOD_CONTROL, VK_F11))
		m_demo_hotkey_flag=true;
	else
		m_demo_hotkey_flag=false;
   }
   else
   {   

⌨️ 快捷键说明

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