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

📄 passwordgendlg.cpp

📁 按照不同的组合生成密码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(false);
		//密码位数输入编辑框可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(true);
		//显示选择了组合名称
		strComposition = "数字小写字母";
		iNum = 36;
	}
	else
	{
		//启动其它的控件
		GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(true);
		//密码位数输入编辑框不可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);
		m_Edit_Num = "0";
	}
}

void CPasswordGenDlg::OnCheckLC() 
{
	// TODO: Add your control notification handler code here
	if (m_Check_LCCtrl.GetCheck() == 1)
	{
		//把其它的选项变为不可用
		GetDlgItem(IDC_CHECK_C)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(false);
		//密码位数输入编辑框可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(true);
		//显示选择了组合名称
		strComposition = "大小写字母";
		iNum = 52;
	}
	else
	{
		//启动其它的控件
		GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(true);
		//密码位数输入编辑框不可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);
		m_Edit_Num = "0";
	}
}

void CPasswordGenDlg::OnCheckDC() 
{
	// TODO: Add your control notification handler code here
	if (m_Check_DCCtrl.GetCheck() == 1)
	{
		//把其它的选项变为不可用
		GetDlgItem(IDC_CHECK_C)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(false);
		//密码位数输入编辑框可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(true);
		//显示选择了组合名称
		strComposition = "数字大写字母";
		iNum = 36;
	}
	else
	{
		//启动其它的控件
		GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(true);
		//密码位数输入编辑框不可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);
		m_Edit_Num = "0";
	}
}

void CPasswordGenDlg::OnCheckL() 
{
	// TODO: Add your control notification handler code here
	if (m_Check_LCtrl.GetCheck() == 1)
	{
		//把其它的选项变为不可用
		GetDlgItem(IDC_CHECK_C)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(false);
		//密码位数输入编辑框可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(true);
		//显示选择了组合名称
		strComposition = "小写字母";
		iNum = 26;
	}
	else
	{
		//启动其它的控件
		GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_D)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(true);
		//密码位数输入编辑框不可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);
		m_Edit_Num = "0";
	}
}

void CPasswordGenDlg::OnCheckD() 
{
	// TODO: Add your control notification handler code here
	if (m_Check_DCtrl.GetCheck() == 1)
	{
		//把其它的选项变为不可用
		GetDlgItem(IDC_CHECK_C)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(false);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(false);
		//密码位数输入编辑框可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(true);
		//显示选择了组合名称
		strComposition = "数字";
		iNum = 10;
	}
	else
	{
		//启动其它的控件
		GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DL)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_LC)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_L)->EnableWindow(true);
		GetDlgItem(IDC_CHECK_DC)->EnableWindow(true);
		//密码位数输入编辑框不可用
		GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);
		m_Edit_Num = "0";
	}
}

void CPasswordGenDlg::OnChangeEditNum() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData(true);
	m_Static_CodeInfo = "组合: " + strComposition + "\n";
	CString str;
	str.Format("位数:%s\n",m_Edit_Num);
	m_Static_CodeInfo = m_Static_CodeInfo + str;
	double fTotal = pow((float)iNum,(float)StrToInt(m_Edit_Num));
	str.Format("生成密码:%.0lf\n",fTotal);
	m_Static_CodeInfo = m_Static_CodeInfo + str;
	
	if ((fTotal/pow(1024,3))*StrToInt(m_Edit_Num) > 1)
	{
		str.Format("空间:%.2fG\n",fTotal/pow(1024,3)*StrToInt(m_Edit_Num));
	}
	else
	{
		if ((fTotal/pow(1024,2))*StrToInt(m_Edit_Num) > 1)
		{
			str.Format("空间:%.2fM\n",fTotal/pow(1024,2)*StrToInt(m_Edit_Num));
		}
		else
		{
			if ((fTotal/pow(1024,1))*StrToInt(m_Edit_Num) > 1)
			{
				str.Format("空间:%.2fK\n",fTotal/pow(1024,1)*StrToInt(m_Edit_Num));
			}
			else
			{
				str.Format("空间:%.2fByte\n",fTotal*StrToInt(m_Edit_Num));
			}
		}
	}

	m_Static_CodeInfo = m_Static_CodeInfo + str;
	UpdateData(false);
	GetDlgItem(IDC_BUTTON_DIR)->EnableWindow(true);
//	GetDlgItem(IDC_EDIT_COUNT)->EnableWindow(true);
}

void CPasswordGenDlg::OnSetfocusEditNum() 
{
	// TODO: Add your control notification handler code here
	UpdateData(false);
}

void CPasswordGenDlg::OnButtonDir() 
{
	// TODO: Add your control notification handler code here
    CoInitialize(NULL);
	
	CString str;
	BROWSEINFO bi;
	char name[MAX_PATH] = "存放密码文件";
	ZeroMemory(&bi,sizeof(BROWSEINFO));
	bi.hwndOwner = GetSafeHwnd();
	bi.pszDisplayName = name;
	bi.lpszTitle = "选择文件的位置(文件数量大,请选择一个空文件夹!):";
	bi.ulFlags = BIF_RETURNONLYFSDIRS;
	LPITEMIDLIST idl = SHBrowseForFolder(&bi);
	if (idl == NULL)
		return;
	SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));
	str.ReleaseBuffer();

	char ch = str.GetAt(0);
	if (!((ch<='Z'&&ch>='C')||(ch<='z'&&ch>='c')))
	{
		MessageBox("请在本地硬盘中选择一个存放位置!","选择位置",MB_OK);
		m_Edit_Loc = "";
	}
	else
	{
		m_Edit_Loc = str;
		
		if(str.GetAt(str.GetLength()-1) != '\\')
		{
			m_Edit_Loc += "\\";
		}
	}

	UpdateData(FALSE);
	CoUninitialize();
	GetDlgItem(IDC_EDIT_COUNT)->EnableWindow(true);
}

void CPasswordGenDlg::OnChangeEditCount() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData(true);
	double fTotal = pow((float)iNum,(float)StrToInt(m_Edit_Num));
    m_Edit_FileNum.Format("%.0lf",ceil(fTotal/(float)StrToInt(m_Edit_Count)));
	GetDlgItem(IDOK)->EnableWindow(true);
	CString str;
	str.Format("%.0lf",fTotal);
	m_Static_Descr = strComposition + " 组合, " + m_Edit_Num + " 位密码,一共生成 " + str + " 个密码," + "用 " +  m_Edit_FileNum + " 个文件来保存,每个文件保存 " + m_Edit_Count + " 个密码.";
	UpdateData(false);
}

void CPasswordGenDlg::OnReset() 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDOK)->EnableWindow(false);//开始按钮不可用
	GetDlgItem(IDC_EDIT_NUM)->EnableWindow(false);//密码位数编辑框不可用
	GetDlgItem(IDC_BUTTON_DIR)->EnableWindow(false);//文件存放位置不可用
	GetDlgItem(IDC_EDIT_COUNT)->EnableWindow(false);//每个文件存放的密码个数不可用
	
	//Check框处于Enable状态
	GetDlgItem(IDC_CHECK_C)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_DLC)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_DL)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_LC)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_L)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_DC)->EnableWindow(true);
	GetDlgItem(IDC_CHECK_D)->EnableWindow(true);
	
	//使Check框处于未选中状态
	m_Check_CCtrl.SetCheck(0);
	m_Check_DCCtrl.SetCheck(0);
	m_Check_DCtrl.SetCheck(0);
	m_Check_DLCCtrl.SetCheck(0);
	m_Check_DLCtrl.SetCheck(0);
	m_Check_LCtrl.SetCheck(0);

	//变量初始化
	iNum = 0;
	m_Edit_Count = "";
	m_Edit_FileNum = "";
	m_Edit_Loc = "";
	m_Edit_Num = "";
	m_Static_CodeInfo = "";
	m_Static_Descr = "";
	strComposition = "";

	UpdateData(false);
}

void CPasswordGenDlg::OnOK() 
{
	// TODO: Add extra validation here
	str = m_Edit_Loc;
	strNum = m_Edit_Num;
	strCount = m_Edit_Count;
//	m_ProgressFileCtrl.SetRange(0,StrToInt(m_Edit_Count));
//	SetTimer(1,5,NULL);
	AfxBeginThread(ComputeThreadProc, GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
//	CDialog::OnOK();
}
/*
void CPasswordGenDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default

	if (nIDEvent == 1)
	{
		static int iCount = 0;
		m_ProgressFileCtrl.SetPos(iCount++*100/StrToInt(m_Edit_Count));
		iCount %= StrToInt(m_Edit_Count);
		TRACE("%d\n",iCount);
	}
	SendMessage(WM_PAINT,0,0);
//	UpdateData(true);
	CDialog::OnTimer(nIDEvent);
}
*/
/*
void CPasswordGenDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here

}
*/
void CPasswordGenDlg::OnHelp() 
{
	// TODO: Add your control notification handler code here
//	HWND helpwnd=HtmlHelp(GetSafeHwnd( ),"help.chm::/index.htm",HH_DISPLAY_TOC,NULL); 

}

LRESULT CPasswordGenDlg::OnThreadFinished(WPARAM wParam, LPARAM lParam)
{
//	CDialog::OnOK();
    MessageBox("完成!","生成密码",MB_OK);
	return 0;
}

⌨️ 快捷键说明

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