📄 privatemanager.cpp
字号:
// PrivateManager.cpp : implementation file
//
#include "stdafx.h"
#include "secretchat.h"
#include "PrivateManager.h"
#include "SecretChatDlg.h" //主窗口类头文件
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPrivateManager dialog
CPrivateManager::CPrivateManager(CWnd* pParent /*=NULL*/)
: CDialog(CPrivateManager::IDD, pParent)
{
//{{AFX_DATA_INIT(CPrivateManager)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CPrivateManager::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPrivateManager)
DDX_Control(pDX, IDC_USERLIST, m_userList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPrivateManager, CDialog)
//{{AFX_MSG_MAP(CPrivateManager)
ON_BN_CLICKED(IDC_SELECT, OnSelect)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_CREATEPUBLICKEY, OnCreatepublickey)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_LBN_DBLCLK(IDC_USERLIST, OnDblclkUserlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPrivateManager message handlers
void CPrivateManager::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CPrivateManager::OnCancel()
{
// TODO: Add extra cleanup here
//CDialog::OnCancel();
}
BOOL CPrivateManager::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CPrivateManager::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::PreTranslateMessage(pMsg);
}
void CPrivateManager::OnSelect()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CString strUser;
//获得现在选择列表的索引
if(m_userList.GetCurSel() != -1)
{
m_userList.GetText(
m_userList.GetCurSel(),
strUser);
AfxGetApp()->WriteProfileString(
"SecretKeySetup",
"UserPrivateKey",
strUser);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0);
}
else
{
AfxMessageBox("没选择私钥");
}
}
void CPrivateManager::OnAdd()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CString str = "私钥文件(*.sk)|*.sk|";
CFileDialog fileName(
TRUE,
0,
0,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
str,
this);
if ( fileName.DoModal() == 1)
{
CString strNewFileName = pSecretChatDlg->m_appName
+ "\\user\\"
+ fileName.GetFileName();
WIN32_FIND_DATA wfd;
HANDLE hSearch = ::FindFirstFile(
strNewFileName,
&wfd);
if(hSearch != INVALID_HANDLE_VALUE)
{
if(MessageBox(
"私钥文件已经存在。覆盖 " + strNewFileName + " 文件吗?",
"添加私钥文件",
MB_YESNO | MB_ICONQUESTION) == IDNO)
{
return;
}
}
::CopyFile(
fileName.GetPathName(),
strNewFileName,
FALSE);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0);//刷新显示
pSecretChatDlg->m_setupDlg.ShowTabWindow(1); //刷新列表
}
}
void CPrivateManager::OnCreate()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CSecretKeyEdit secretKeyEditDlg;
secretKeyEditDlg.m_select = SELECT_CREATE;
secretKeyEditDlg.DoModal();
pSecretChatDlg->m_setupDlg.ShowTabWindow(0);//刷新显示
pSecretChatDlg->m_setupDlg.ShowTabWindow(1);//刷新显示
}
void CPrivateManager::OnCreatepublickey()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CSecretKeyEdit secretKeyEditDlg;
//获得现在选择列表的索引
if(m_userList.GetCurSel() != -1)
{
CString strUser;
m_userList.GetText(
m_userList.GetCurSel(),
strUser);
if(secretKeyEditDlg.validateSecretKey(
pSecretChatDlg->m_appName + "\\user\\" + strUser) != 1)
{
MessageBox(
strUser + " 不是私钥文件",
"密聊",
MB_ICONEXCLAMATION);
return;
}
if(secretKeyEditDlg.CreatePublicKey(
pSecretChatDlg->m_appName + "\\user\\" + strUser))
{
strUser.SetAt(
strUser.GetLength() - 2,
'p');
MessageBox(
"已经生成公钥文件 " + strUser,
"密聊",
MB_ICONINFORMATION);
}
}
}
void CPrivateManager::OnEdit()
{
CSecretKeyEdit secretKeyEditDlg;
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
//获得现在选择列表的索引
if(m_userList.GetCurSel() != -1)
{
CString strUser;
m_userList.GetText(
m_userList.GetCurSel(),
strUser);
secretKeyEditDlg.m_select = SECRETKEY_PRIVATE;
if(secretKeyEditDlg.validateSecretKey(
pSecretChatDlg->m_appName + "\\user\\" + strUser) != SECRETKEY_PRIVATE)
{
MessageBox(
"不是用户私钥文件",
"密聊",
MB_ICONINFORMATION);
return;
}
secretKeyEditDlg.DoModal();
}
}
void CPrivateManager::OnDelete()
{
CSecretKeyEdit secretKeyEditDlg;
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
//获得现在选择列表的索引
if(m_userList.GetCurSel() != -1)
{
CString strUser, strFriend;
m_userList.GetText(
m_userList.GetCurSel(),
strUser);
strFriend = strUser;
strFriend.SetAt(
strFriend.GetLength() - 2,
'p');
if(MessageBox(
"是否删除私钥文件 " + strUser + " 和它的公钥文件 " + strFriend + " 吗?",
"删除私钥文件",
MB_YESNO | MB_ICONQUESTION) == IDNO)
{
return;
}
::DeleteFile(
pSecretChatDlg->m_appName
+ "\\user\\"
+ strUser);
::DeleteFile(
pSecretChatDlg->m_appName
+ "\\user\\"
+ strFriend);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0);//刷新显示
pSecretChatDlg->m_setupDlg.ShowTabWindow(1); //刷新列表
}
}
void CPrivateManager::OnDblclkUserlist() //双击列表
{
OnEdit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -