📄 passwordgendlg.cpp
字号:
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 + -