📄 setup.cpp
字号:
// Setup.cpp : implementation file
//
#include "stdafx.h"
#include "secretchat.h"
#include "Setup.h"
#include "SecretChatDlg.h" //主窗口类头文件
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetup dialog
CSetup::CSetup(CWnd* pParent /*=NULL*/)
: CDialog(CSetup::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetup)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CSetup::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetup)
DDX_Control(pDX, IDC_SETUPTAB, m_setupTab);
DDX_Control(pDX, IDC_DINGWEI, m_dingWei);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetup, CDialog)
//{{AFX_MSG_MAP(CSetup)
ON_NOTIFY(TCN_SELCHANGE, IDC_SETUPTAB, OnSelchangeSetuptab)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetup message handlers
void CSetup::OnOK()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CWaitCursor WaitCursor; //等待光标
if( !m_secretKeySetupDlg.UpdateData()) return;
if( !m_privateManagerDlg.UpdateData()) return;
if( !m_publicKeyManagerDlg.UpdateData()) return;
if( !m_generalDlg.UpdateData()) return;
//设置密钥设置选项
CString strUser, strFriend;
if(m_secretKeySetupDlg.m_userIndex == -1)
{
MessageBox(
"没有选择用户私钥",
"密聊",
MB_ICONINFORMATION);
}
else
{
m_secretKeySetupDlg.m_userPrivateKey.GetLBText(
m_secretKeySetupDlg.m_userIndex,
strUser);
AfxGetApp()->WriteProfileString(
"SecretKeySetup",
"UserPrivateKey",
strUser);
}
if(m_secretKeySetupDlg.m_friendIndex == -1)
{
MessageBox(
"没有选择好友公钥",
"密聊",
MB_ICONINFORMATION);
}
else
{
m_secretKeySetupDlg.m_friendPublicKey.GetLBText(
m_secretKeySetupDlg.m_friendIndex,
strFriend);
AfxGetApp()->WriteProfileString(
"SecretKeySetup",
"FriendPublicKey",
strFriend);
}
//设置常规选项
AfxGetApp()->WriteProfileInt("General", "ArriveSound", m_generalDlg.m_arriveSound);
AfxGetApp()->WriteProfileInt("General", "ArriveShow", m_generalDlg.m_arriveShow);
AfxGetApp()->WriteProfileInt("General", "Top", m_generalDlg.m_top);
AfxGetApp()->WriteProfileInt("General", "Tray", m_generalDlg.m_tray);
AfxGetApp()->WriteProfileInt("General", "LANStartup", m_generalDlg.m_LANStartup);
CString strIP;
BYTE b1,b2,b3,b4;
m_generalDlg.m_LANIP.GetAddress(b1,b2,b3,b4); //获得IP
m_generalDlg.m_LANIP.GetWindowText(strIP); //获得IP
//AfxMessageBox(strIP);
// strIP.Format(
// "%d.%d.%d.%d",
// b1,b2,b3,b4); //把数字转换成字符
AfxGetApp()->WriteProfileString("General", "LANIP", strIP);
AfxGetApp()->WriteProfileInt("General", "Startup", m_generalDlg.m_startup);
//启动时是否自动运行
HKEY hkey; //键句柄
if(m_generalDlg.m_startup)
{
//启动
::RegOpenKeyEx(
HKEY_LOCAL_MACHINE/*主键*/,
"SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\RUN"/*子键*/,
NULL,
KEY_ALL_ACCESS,
&hkey);
::RegSetValueEx(
hkey,
"SecretChat"/*键值*/,
0,
REG_SZ,
(LPBYTE)__argv[0]/*键值的数据*/,
256); //把sz的数据写入到记事本键值
::RegCloseKey(hkey); //关闭
}
else
{
//关闭
::RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\RUN",
NULL,
KEY_ALL_ACCESS,
&hkey);
::RegDeleteValue(
hkey,
"SecretChat"/*键值*/); //删除键值
::RegCloseKey(hkey);
}
////根据注册表数据进行设置
pSecretChatDlg->MyUpdateData();
CDialog::OnOK();
}
void CSetup::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
BOOL CSetup::OnInitDialog()
{
CDialog::OnInitDialog();
//添加选项卡
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "密钥设置";
tItem.cchTextMax = strlen( tItem.pszText);
m_setupTab.InsertItem( 0, &tItem); //添加选项
tItem.pszText="私钥管理";
tItem.cchTextMax = strlen( tItem.pszText);
m_setupTab.InsertItem( 1, &tItem); //添加选项
tItem.pszText="公钥管理";
tItem.cchTextMax = strlen( tItem.pszText);
m_setupTab.InsertItem( 2, &tItem); //添加选项
tItem.pszText="常规";
tItem.cchTextMax = strlen( tItem.pszText);
m_setupTab.InsertItem( 3, &tItem); //添加选项
tItem.pszText="关于";
tItem.cchTextMax = strlen( tItem.pszText);
m_setupTab.InsertItem( 4, &tItem); //添加选项
CRect rect;
m_dingWei.GetWindowRect( &rect);
ScreenToClient( &rect);
m_secretKeySetupDlg.Create(IDD_SECRETKEYSETUP,this);
m_privateManagerDlg.Create(IDD_PRIVATEMANAGER,this);
m_publicKeyManagerDlg.Create(IDD_PUBLICKEYMANAGER,this);
m_generalDlg.Create(IDD_GENERAL,this);
m_aboutDlg.Create(IDD_ABOUTBOX,this);
m_secretKeySetupDlg.MoveWindow( &rect);
m_privateManagerDlg.MoveWindow( &rect);
m_publicKeyManagerDlg.MoveWindow( &rect);
m_generalDlg.MoveWindow( &rect);
m_aboutDlg.MoveWindow( &rect);
ShowTabWindow(0); //更新下拉列表
ShowTabWindow(m_index); //每次显示前都要设置m_index的值
//当没有私钥时提示生成
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSetup::OnSelchangeSetuptab(NMHDR* pNMHDR, LRESULT* pResult)
{
ShowTabWindow( m_setupTab.GetCurSel() );
*pResult = 0;
}
void CSetup::ShowTabWindow(int index)
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
switch(index)
{
case 0:
m_secretKeySetupDlg.ShowWindow( SW_SHOW);
m_privateManagerDlg.ShowWindow( SW_HIDE);
m_publicKeyManagerDlg.ShowWindow( SW_HIDE);
m_generalDlg.ShowWindow( SW_HIDE);
m_aboutDlg.ShowWindow( SW_HIDE);
//设置窗口图标
SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE);
/*删除下拉列表中的所有字符*/
m_secretKeySetupDlg.m_userPrivateKey.ResetContent();
//添加指定目录的文件到下拉列表,并选择指定的项
m_secretKeySetupDlg.m_userPrivateKey.Dir(
DDL_DIRECTORY,
pSecretChatDlg->m_appName + "\\user\\*.sk");
//m_secretKeySetupDlg.m_userPrivateKey.SetCurSel(0); //如果只有一个项就选它
m_secretKeySetupDlg.m_userPrivateKey.SelectString(
-1,
AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"));
m_secretKeySetupDlg.m_friendPublicKey.ResetContent();
m_secretKeySetupDlg.m_friendPublicKey.Dir(
DDL_DIRECTORY,
pSecretChatDlg->m_appName + "\\friend\\*.pk");
m_secretKeySetupDlg.m_friendPublicKey.SelectString(
-1,
AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey"));
SetWindowText("设置 - 密钥设置");
break;
case 1:
m_secretKeySetupDlg.ShowWindow( SW_HIDE);
m_privateManagerDlg.ShowWindow( SW_SHOW);
m_publicKeyManagerDlg.ShowWindow( SW_HIDE);
m_generalDlg.ShowWindow( SW_HIDE);
m_aboutDlg.ShowWindow( SW_HIDE);
SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE);
//删除全部列表
m_privateManagerDlg.m_userList.ResetContent();
//把指定目录的sk文件全部添加到列表
m_privateManagerDlg.m_userList.Dir(
DDL_DIRECTORY,
pSecretChatDlg->m_appName + "\\user\\*.sk");
//选择列表中的某个字符
m_privateManagerDlg.m_userList.SelectString(
-1,
AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"));
SetWindowText("设置 - 私钥管理");
break;
case 2:
m_secretKeySetupDlg.ShowWindow( SW_HIDE);
m_privateManagerDlg.ShowWindow( SW_HIDE);
m_publicKeyManagerDlg.ShowWindow( SW_SHOW);
m_generalDlg.ShowWindow( SW_HIDE);
m_aboutDlg.ShowWindow( SW_HIDE);
SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE);
//删除全部列表
m_publicKeyManagerDlg.m_friendList.ResetContent();
//把指定目录的sk文件全部添加到列表
m_publicKeyManagerDlg.m_friendList.Dir(
DDL_DIRECTORY,
pSecretChatDlg->m_appName + "\\friend\\*.pk");
//选择列表中的某个字符
m_publicKeyManagerDlg.m_friendList.SelectString(
-1,
AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey"));
SetWindowText("设置 - 公钥管理");
break;
case 3:
m_secretKeySetupDlg.ShowWindow( SW_HIDE);
m_privateManagerDlg.ShowWindow( SW_HIDE);
m_publicKeyManagerDlg.ShowWindow( SW_HIDE);
m_generalDlg.ShowWindow( SW_SHOW);
m_aboutDlg.ShowWindow( SW_HIDE);
SetIcon(AfxGetApp()->LoadIcon(IDI_SETUP), FALSE);
SetWindowText("设置 - 常规");
break;
case 4:
m_secretKeySetupDlg.ShowWindow( SW_HIDE);
m_privateManagerDlg.ShowWindow( SW_HIDE);
m_publicKeyManagerDlg.ShowWindow( SW_HIDE);
m_generalDlg.ShowWindow( SW_HIDE);
m_aboutDlg.ShowWindow( SW_SHOW);
SetIcon(AfxGetApp()->LoadIcon(IDI_SETUP), FALSE);
SetWindowText("设置 - 关于");
break;
}
m_setupTab.SetCurSel(index); //设置选项的显示索引
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -