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

📄 pppclientdlg.cpp

📁 客户端: 这是一个完整的基于Wince 4.1图形图象,网络通讯(C/S)模式下的商用程序源代码包.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		bp+=rc;
		//读取了一些数据之后,缓冲区中的剩余可用空间也应该相应地减小。
		cnt-=rc;
	}

	//timeout...
//	para.bExit = TRUE;
//	while(!para.IsExit) Sleep(1);
//	CloseHandle(hThread);
	////////////////////////////
	
	return len;
}
//
//从服务端读取数据的函数。

//参数1:连接套接字;参数2:指向缓冲区的指针;参数3:缓冲区的长度;
//参数4:超时处理
int ReadSocket(SOCKET fd,char *bp,int len,DWORD timeout)
{


    fd_set fdRead;
	TIMEVAL tt;
	tt.tv_sec=1;//timeout/1000;
	tt.tv_usec=0;//(timeout%1000)*1000;	
	/////////////////////////////////////////////
	int iRet=0;
	int rc=0;
	DWORD bt,et;
	bt=et=GetTickCount();
	MSG msg;
	while(TRUE)//cnt>0)
	{
		 if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))  
          {                
                 ::TranslateMessage(&msg);  
                 ::DispatchMessage(&msg);  
          }  
		FD_ZERO(&fdRead);
		FD_SET(fd,&fdRead);
		iRet=select(0,&fdRead,NULL,NULL,&tt);
		if(iRet==SOCKET_ERROR)
		{
			break;
		}

		if(iRet>0)
		{
			if(FD_ISSET(fd,&fdRead))
			{
				//read
              rc=recv(fd,bp,len,0);

		      if(rc==SOCKET_ERROR)
			  {		
		    	//接收错误!		
			    int errorno;
		    	errorno=WSAGetLastError();
			    return -1;
			  }
		     //If the connection has been gracefully closed, the return value is zero.
		      else if(rc==0) 
			  {
			   int errorno;
			   errorno=WSAGetLastError();	
			   return 0;
			 }
			  else
			  {
				  return rc;
			  }

			}
		}

		//timeout
		et=GetTickCount();
		if(et-bt>=timeout) break;
	}
	return -2;	
}
//SOCKET ClientSocket;
//
SENDFILEHEAD m_filehead;
BOOL  m_sendfile_ready_flag=FALSE;
TCHAR m_savefilename[256];
//char Buffer[4096];
char Buffer[SOCKETBUFFSIZE];
//
//取当前文件的路径名
CString GetCurDir()
{
	TCHAR sDrive[_MAX_DRIVE];
	TCHAR sDir[_MAX_DIR];
	TCHAR sFilename[_MAX_FNAME],Filename[_MAX_FNAME];
	TCHAR sExt[_MAX_EXT];

	GetModuleFileName(AfxGetInstanceHandle(), Filename, _MAX_PATH);
	_tsplitpath(Filename, sDrive, sDir, sFilename, sExt);
	CString homeDir(CString(sDrive) + CString(sDir));
	int nLen = homeDir.GetLength();
	if(homeDir.GetAt(nLen-1) != _T('\\'))
		homeDir += _T('\\');
	return homeDir;
}
//软件保护
void  GetDiskCSerialNumber(CString &serial)
{

//在写程序时我们想对每一台计算机都生成一个唯一的标识,而且在一此共享软件中我们也看到,
//软件在不同的机器上生成了不同的标识,这是如何实现的呢,其实是软件有一部分程序读取了,
//本地计算机的一部分硬件参数(如硬盘序列号,网卡序列号等等),再通过一系列算法而得到了一个唯一标识,

 LPCTSTR lpRootPathName="c:\\"; //取C盘
 LPTSTR lpVolumeNameBuffer=new char[80];//磁盘卷标
 DWORD nVolumeNameSize=80;// 卷标的字符串长度
 DWORD VolumeSerialNumber;//硬盘序列号
 DWORD MaximumComponentLength;// 最大的文件长度
 LPTSTR lpFileSystemNameBuffer=new char[80];// 存储所在盘符的分区类型的长指针变量
 DWORD nFileSystemNameSize=80;// 分区类型的长指针变量所指向的字符串长度
 DWORD FileSystemFlags;// 文件系统的一此标志
 DWORD sno;
if(::GetVolumeInformation(lpRootPathName,
  lpVolumeNameBuffer, nVolumeNameSize,
  &VolumeSerialNumber, &MaximumComponentLength,
  &FileSystemFlags,
  lpFileSystemNameBuffer, nFileSystemNameSize)
  )
 {
 sno=VolumeSerialNumber;
// serial.sprintf("%lx",VolumeSerialNumber);
 }
 else //error
 {
 //serial=StrPas("abcd1234");
 sno=12345678;
 }


DWORD Secspclu,Bytespsec,Freeclu,Totalclu,Ts;//,Fs;

if(GetDiskFreeSpace("c:\\",&Secspclu,&Bytespsec,&Freeclu,&Totalclu))
{
//Fs:=Freeclu*Secspclu*Bytespsec;
Ts=Totalclu*Secspclu*Bytespsec;
}
else
{
 Ts=1024*1024;
}
sno+=Ts;
//
//获得内存状态
MEMORYSTATUS memory;
memory.dwLength =sizeof(memory); //初始化
GlobalMemoryStatus(&memory);
//Memo1→Lines→Add(“您的物理内存是(Mb):”+String(int(memory.dwTotalPhys /1024/1024)));
//Memo1→Lines→Add(“其中可用内存是(Kb):”+String(int( memory. /1024)));
//获得CPU型号
 SYSTEM_INFO systeminfo;
 GetSystemInfo (&systeminfo);
 //Memo1→Lines→Add(“您的CPU类型是:”+String( systeminfo.dwProcessorType ));
 //LCJH-SN
 serial.Format("%lX",sno+memory.dwTotalPhys+systeminfo.dwProcessorType); 
//serial.sprintf("%lx",sno+memory.dwTotalPhys /1024/1024+systeminfo.dwProcessorType);
//Edit1.text:=FormatFloat('###,###',Ts); //总空间
//Edit2.text:=FormatFloat('###,###',Fs);  //可用空间

delete  lpVolumeNameBuffer;
delete  lpFileSystemNameBuffer;
//编译,链接并运行程序,单击按钮,在弹出的对话框中就是我们要的序列号。
//对不对我们验证一下,进入dos窗口,打入"dir c:/p"命令,怎么样是不是和我们的程序显示的一模一样
//这样我们就在功告成了。
}
/////////////////////////
//
CString GetSoftWareRegisterCode(CString serial)
{
 CString sn; 
 sn=serial;

 if(sn.GetLength()<=0||sn.GetLength()%2!=0)
 {
	 return TEXT("1234567890");
 } 
 //全部为大写
 //
 sn.MakeUpper();
 //
 CString tmpstr;
 int len;
 len=sn.GetLength();
 //0,1,2,3,4,5,6,7,8,9
 //1,8,2,5,0,3,9,6,4,7
 TCHAR code[11]={_T('1'),_T('9'),_T('2'),_T('6'),_T('4'),
	             _T('3'),_T('8'),_T('5'),_T('0'),_T('7'),
				 _T('\0')

				};
 //密码=[各项求和后模10]+[原码]+[各项求积后模10]
 
 long he,ji;
 he=0;
 ji=1;
 TCHAR ch,ss,mm;
 TCHAR *mstr;
 ss=0;
 mm=0;
 mstr=new TCHAR[len+2+1];
 int count;
 count=0;
 for(int i=0;i<len;i++)
 {
   ch=sn.GetAt(i);
   if(ch>=_T('A')&&ch<=_T('F'))
   {
    ss=ch-_T('A');
   }
   else
   {
     ss=ch-_T('0');
   }
   //he,ji
   if(ss!=0)
   {
    he=he+ss;   
    ji=ji*ss;
   }
   //
   if(ss!=0)
   {   
    mm=code[ss];
    mstr[count+1]=mm;
    count++;
   }
   //.....
 }
 //he
   ss=labs(he)%10;
   mm=code[ss];
   mstr[0]=mm;
//ji
   ss=labs(ji)%10;
   mm=code[ss];
   mstr[count+1]=mm;
//
   mstr[count+2]=_T('\0');

   //
   tmpstr=CString("HH-")+mstr;

   //
   delete mstr; 

   return tmpstr;

}
//extern void  GetDiskCSerialNumber(CString &serial);
//extern CString GetSoftWareRegisterCode(CString serial);

//extern CString GetCurDir(void);

extern bool m_software_register_flag;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
#include "ColorWnd.h"
class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };	
	CColorWnd	m_register_static;
	CXPButton	m_okaboutbtn;
	//}}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)
	virtual BOOL OnInitDialog();
	afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
	//}}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)
	DDX_Control(pDX, IDC_REGISTER_STATIC, m_register_static);
	DDX_Control(pDX, IDOK, m_okaboutbtn);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	ON_WM_RBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPPPClientDlg dialog

CPPPClientDlg::CPPPClientDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPPPClientDlg::IDD, pParent)
{
	 //
     m_modify_flag=false;
	 //
	 m_one_threadid=0;
	 m_one_thread_handle=NULL;
	 m_all_threadid=0;
	 m_all_thread_handle=NULL;
	//
	m_all_run_flag=false;
	//
	m_share_data_flag=false;
	//
	 m_edit_type=-1;//-1:无效,0-Append,1-Insert(Before),2-Modify
	 m_cur_pos=-1;//当前位置
	 m_save_filename=_T("");
	 //
	//for demo dlg
	m_show_demo_flag=false;
	m_show_main_flag=true;
	MY_HOTKEY=1001;
	MY_DEMO_HOTKEY=1002;
	
	m_hotkey_flag=false;
	m_demo_hotkey_flag=false;
	//{{AFX_DATA_INIT(CPPPClientDlg)
	m_speed = 0;
	m_cur_filename = _T("");
	m_delaytime = 0;
	m_sharefile_flag = FALSE;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPPPClientDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPPPClientDlg)
	DDX_Control(pDX, IDC_POSITION_COMBO, m_position_combobox);
	DDX_Control(pDX, IDC_OPENFILE_BUTTON, m_OpenfileBtn);
	DDX_Control(pDX, IDC_PREV_BUTTON, m_PrevBtn);
	DDX_Control(pDX, IDC_NEXT_BUTTON, m_NextBtn);
	DDX_Control(pDX, IDC_LAST_BUTTON, m_LastBtn);
	DDX_Control(pDX, IDC_FIRST_BUTTON, m_FirstBtn);
	DDX_Control(pDX, IDC_DELALL_BUTTON, m_DelallBtn);
	DDX_Control(pDX, IDC_DELONE_BUTTON, m_DeloneBtn);
	DDX_Control(pDX, IDC_SAVE_BUTTON, m_SaveBtn);
	DDX_Control(pDX, IDC_CANCEL_BUTTON, m_CancelBtn);
	DDX_Control(pDX, IDC_INSERT_BUTTON, m_InsertBtn);
	DDX_Control(pDX, IDC_APPEND_BUTTON, m_AppendBtn);
	DDX_Control(pDX, IDC_RUN_PROGRESS, m_run_progressctrl);
	DDX_Control(pDX, IDC_MESS_LIST, m_mess_list);
	DDX_Control(pDX, IDC_ITEM_LIST, m_item_list);
	DDX_Control(pDX, IDC_ACTIONOUT_COMBO, m_actionout_combobox);
	DDX_Control(pDX, IDC_ACTIONIN_COMBO, m_actionin_combobox);
	DDX_Control(pDX, IDC_TYPE_COMBO, m_type_combobox);
	DDX_Text(pDX, IDC_SPEED_EDIT, m_speed);
	DDV_MinMaxLong(pDX, m_speed, 0, 10000);
	DDX_Text(pDX, IDC_CURFILENAME_EDIT, m_cur_filename);
	DDX_Text(pDX, IDC_DELAYTIME_EDIT, m_delaytime);
	DDV_MinMaxLong(pDX, m_delaytime, 0, 60000);
	DDX_Check(pDX, IDC_SHAREFILE_CHECK, m_sharefile_flag);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPPPClientDlg, CDialog)
	//{{AFX_MSG_MAP(CPPPClientDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_EXIT_FILE, OnExitFile)
	ON_COMMAND(ID_ABOUT, OnAbout)
	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_BN_CLICKED(IDC_APPEND_BUTTON, OnAppendButton)
	ON_BN_CLICKED(IDC_INSERT_BUTTON, OnInsertButton)
	ON_BN_CLICKED(IDC_SAVE_BUTTON, OnSaveButton)
	ON_BN_CLICKED(IDC_CANCEL_BUTTON, OnCancelButton)
	ON_BN_CLICKED(IDC_DELONE_BUTTON, OnDeloneButton)
	ON_BN_CLICKED(IDC_DELALL_BUTTON, OnDelallButton)
	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_NOTIFY(NM_CLICK, IDC_ITEM_LIST, OnClickItemList)
	ON_NOTIFY(NM_DBLCLK, IDC_ITEM_LIST, OnDblclkItemList)
	ON_COMMAND(ID_MOVEUP_EDIT, OnMoveupEdit)
	ON_COMMAND(ID_MOVEDOWN_EDIT, OnMovedownEdit)
	ON_COMMAND(ID_COPY_EDIT, OnCopyEdit)
	ON_COMMAND(ID_CUT_EDIT, OnCutEdit)
	ON_COMMAND(ID_PASTE_EDIT, OnPasteEdit)
	ON_CBN_SELCHANGE(IDC_TYPE_COMBO, OnSelchangeTypeCombo)
	ON_BN_CLICKED(IDC_OPENFILE_BUTTON, OnOpenfileButton)
	ON_COMMAND(ID_SETPOS_OPTION, OnSetposOption)
	ON_WM_DESTROY()
	ON_COMMAND(ID_SHOWHIDE_DEMO_OPTION, OnShowhideDemoOption)
	ON_COMMAND(ID_SHOWHIDE_MAIN_OPTION, OnShowhideMainOption)
	ON_MESSAGE(WM_HOTKEY,OnHotKey)	
	ON_MESSAGE(WM_SHOW_MAINWND_MESSAGE,OnShowMainWnd)
	ON_COMMAND(ID_SETSIZE_OPTION, OnSetsizeOption)
	ON_COMMAND(ID_SETSERVER_OPTION, OnSetserverOption)
	ON_COMMAND(ID_DEMOONE_SIMULATION, OnDemooneSimulation)
	ON_COMMAND(ID_DEMOALL_SIMULATION, OnDemoallSimulation)
	ON_COMMAND(ID_STOPDEMO_SIMULATION, OnStopdemoSimulation)
	ON_WM_SHOWWINDOW()
	ON_WM_SETCURSOR()
	ON_WM_CREATE()
	ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText ) 
	ON_WM_TIMER()
	ON_COMMAND(ID_ADJUSTTIME_COMM, OnAdjusttimeComm)
	ON_COMMAND(ID_SENDONE_COMM, OnSendoneComm)
	ON_COMMAND(ID_SENDALL_COMM, OnSendallComm)
	ON_COMMAND(ID_STARTPLAY_COMM, OnStartplayComm)

⌨️ 快捷键说明

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