www.pudn.com > PPPKeygen200.rar > PPPKeygenDlg.cpp


// PPPKeygenDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "PPPKeygen.h" 
#include "PPPKeygenDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
// 
/* 
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=serial.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('8'),_T('2'),_T('5'),_T('0'), 
	             _T('3'),_T('9'),_T('6'),_T('4'),_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=_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=mstr; 
 
   // 
   delete mstr; 
  
 
   return tmpstr; 
 
}*/ 
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=_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; 
 
} 
///////////////////////////////////////////////////////////////////////////// 
// 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() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPPPKeygenDlg dialog 
 
CPPPKeygenDlg::CPPPKeygenDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CPPPKeygenDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CPPPKeygenDlg) 
	m_sn_str = _T(""); 
	m_code_str = _T(""); 
	//}}AFX_DATA_INIT 
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
} 
 
void CPPPKeygenDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPPPKeygenDlg) 
	DDX_Control(pDX, IDC_CODE_EDIT, m_code_control); 
	DDX_Text(pDX, IDC_SN_EDIT, m_sn_str); 
	DDX_Text(pDX, IDC_CODE_EDIT, m_code_str); 
	DDV_MaxChars(pDX, m_code_str, 255); 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CPPPKeygenDlg, CDialog) 
	//{{AFX_MSG_MAP(CPPPKeygenDlg) 
	ON_WM_SYSCOMMAND() 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	ON_BN_CLICKED(IDC_OK_BUTTON, OnOkButton) 
	ON_BN_CLICKED(IDC_GETCODE_BUTTON, OnGetcodeButton) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPPPKeygenDlg message handlers 
 
BOOL CPPPKeygenDlg::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 
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
	//  when the application's main window is not a dialog 
	SetIcon(m_hIcon, TRUE);			// Set big icon 
	SetIcon(m_hIcon, FALSE);		// Set small icon 
	 
	// TODO: Add extra initialization here 
	m_sn_str=TEXT(""); 
	m_code_control.SetLimitText(255);  
	UpdateData(FALSE); 
	return TRUE;  // return TRUE  unless you set the focus to a control 
} 
 
void CPPPKeygenDlg::OnSysCommand(UINT nID, LPARAM lParam) 
{ 
	if ((nID & 0xFFF0) == IDM_ABOUTBOX) 
	{ 
		CAboutDlg dlgAbout; 
		dlgAbout.DoModal(); 
	} 
	else 
	{ 
		CDialog::OnSysCommand(nID, lParam); 
	} 
} 
 
// If you add a minimize button to your dialog, you will need the code below 
//  to draw the icon.  For MFC applications using the document/view model, 
//  this is automatically done for you by the framework. 
 
void CPPPKeygenDlg::OnPaint()  
{ 
	if (IsIconic()) 
	{ 
		CPaintDC dc(this); // device context for painting 
 
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 
 
		// Center icon in client rectangle 
		int cxIcon = GetSystemMetrics(SM_CXICON); 
		int cyIcon = GetSystemMetrics(SM_CYICON); 
		CRect rect; 
		GetClientRect(&rect); 
		int x = (rect.Width() - cxIcon + 1) / 2; 
		int y = (rect.Height() - cyIcon + 1) / 2; 
 
		// Draw the icon 
		dc.DrawIcon(x, y, m_hIcon); 
	} 
	else 
	{ 
		CDialog::OnPaint(); 
	} 
} 
 
// The system calls this to obtain the cursor to display while the user drags 
//  the minimized window. 
HCURSOR CPPPKeygenDlg::OnQueryDragIcon() 
{ 
	return (HCURSOR) m_hIcon; 
} 
 
void CPPPKeygenDlg::OnOkButton()  
{ 
	// TODO: Add your control notification handler code here 
	EndDialog(0); 
} 
 
void CPPPKeygenDlg::OnGetcodeButton()  
{ 
	// TODO: Add your control notification handler code here 
	UpdateData(); 
	if(m_sn_str==TEXT("")||m_sn_str.GetLength()%2!=0)  
	{ 
		m_sn_str=TEXT(""); 
		m_code_str=TEXT(""); 
		UpdateData(FALSE); 
		return; 
	} 
	CString code; 
	code=GetSoftWareRegisterCode(m_sn_str); 
	m_code_str=code; 
	UpdateData(FALSE); 
}