?? secretchatdlg.h
字號(hào):
// SecretChatDlg.h : header file
//
#if !defined(AFX_SECRETCHATDLG_H__1047F9F5_CF01_483A_8822_470EF4A132CF__INCLUDED_)
#define AFX_SECRETCHATDLG_H__1047F9F5_CF01_483A_8822_470EF4A132CF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CSecretChatDlg dialog
//托盤事件
#define MYWM_NOTIFYICON WM_USER + 1
//運(yùn)行時(shí)隱藏窗口消息
#define WM_RUNHIDE ( WM_USER + 2)
//監(jiān)聽的端口號(hào)
#define LISTEN_PORT 2300
//應(yīng)用程序版本號(hào)
#define APPLICATION_VERSION 1
//當(dāng)前自己的通訊版本號(hào)
#define MESSAGE_VERSION 1
//密鑰文件版本號(hào)
#define SECRETKEY_VERSION 1
//一次發(fā)送的數(shù)據(jù)大小,msg.n
#define SENDFILESIZE 1024
//接收的最大消息數(shù)目
#define MESSAGE_COUNT 4
/*1位表示被用著,0位表示可以用,如果全為0就代表完全空著,全為1就代表沒有空余
m_send_message_package_ID數(shù)組的索引和m_send_message_package_ID_index的位相對(duì)應(yīng),
總之有空閑的位就可以使用*/
DWORD exponential(DWORD, DWORD a = 2);
void bit_to_index(DWORD bit, DWORD &index, BOOL count);
DWORD bit_to_index(DWORD bit, BOOL count);
int get_bit_count(DWORD bit, BOOL count);
BOOL get_bit(DWORD bit, DWORD index);
void set_bit(DWORD &bit, DWORD index, BOOL count);
// CNoteTunnelDlg dialog
#include "RSA.h"
#include "__DWORD128.h"
#include "ListenSocket.h"
#include "BtnST.h" // Added by ClassView
#include "Connect.h"
#include "HyperLink.h" // Added by ClassView
#include "Setup.h"
#include "Label.h"
#include "ColorEdit.h"
class CSecretChatDlg : public CDialog
{
// Construction
public:
CSecretChatDlg(CWnd* pParent = NULL); // standard constructor
//套接字用
int m_friend_message_version; //對(duì)方的消息版本號(hào)
BOOL m_bListen; //是否監(jiān)聽成功
CConnect m_connectDlg; //輸入IP地址的對(duì)話框
UINT m_port; //服務(wù)器端口號(hào),雙方約定為48501。
CString m_IP; //服務(wù)器IP地址
CSocket *m_pSocket; //客戶機(jī)類對(duì)象
CListenSocket m_socketListen; //服務(wù)器監(jiān)聽的套接字對(duì)象
BOOL m_online; //判斷是否聯(lián)機(jī)
BOOL m_clientOrService; //自己用的時(shí)客戶端還是服務(wù)器端
int m_zai_xian_biao_ji; //在線標(biāo)記
int SendData(MessagePackage &msg, int n); //發(fā)送數(shù)據(jù)
BOOL Connect();
BOOL Disconnection();
//RSA用
// public_key m_public_key;
// private_key m_private_key;
//接收同時(shí)處理時(shí)會(huì)并行更改requires,所以把他們分開
public_key m_public_key_send;
private_key m_private_key_send;
public_key m_public_key_receive;
private_key m_private_key_receive;
void MessagePackageToText(MessagePackage &package);//將消息包轉(zhuǎn)化成明文
void TextToMessagePackage(MessagePackage &package, CString strm);//將明文strm轉(zhuǎn)化成消息包
//發(fā)送消息要保留的信息
DWORD m_send; //發(fā)送的消息數(shù)目,這里最大為1
CString m_send_time; //發(fā)送消息時(shí)間
//因?yàn)橄鼣?shù)組的處理方式的進(jìn)出無(wú)序的,所以要用位來(lái)表示
__DWORD128 m_send_message_package_ID[32]; //發(fā)送消息包的標(biāo)識(shí)
DWORD m_send_message_package_ID_index; //用它的位判斷發(fā)送消息包ID的那個(gè)索引有沒被使用
/*類或結(jié)構(gòu)做參數(shù)必須用引用傳遞,否則就會(huì)在調(diào)用它時(shí)使得內(nèi)存變亂,而出現(xiàn)無(wú)法回復(fù)的錯(cuò)誤*/
int m_send_message_package_ID_del(__DWORD128 &del); //刪除消息ID
int m_send_message_package_ID_find(__DWORD128 &find); //查找
int m_send_message_package_ID_add(__DWORD128 &add); //添加
//接收消息要保留的信息
int m_receive_text_length; //收到消息的長(zhǎng)度
char m_receive_text[DATA_LENGTH]; //收到消息的正文緩沖區(qū)
__DWORD128 m_receive_digital_ID; //收到消息的數(shù)字標(biāo)識(shí)
__DWORD128 m_receive_message_package_ID; //收到消息包的標(biāo)識(shí)
__DWORD128 m_receive_message_dollop_ID; //收到所以消息塊總和的標(biāo)識(shí)
CString m_receive_time; //收到消息時(shí)間
MessagePackage m_receive_message_package[MESSAGE_COUNT];//為了接收時(shí)的線程能讀到的發(fā)過(guò)來(lái)的消息包的數(shù)據(jù)
CRITICAL_SECTION m_cs_receive; //臨界區(qū),接收多條消息有用m_cs.LockCount代表正在接收消息的數(shù)目
long m_receive; //代表正在接收消息的數(shù)目,-1未沒有
BOOL InstallPublicKey(CString fileName = ""); //安裝好友公鑰文件
BOOL InstallPrivateKey(CString fileName = ""); //安裝用戶私鑰文件
public:
//文件傳送功能
BOOL m_send_file; //判斷是否接收或發(fā)送文件
CString m_send_file_name; //發(fā)送的文件名
// int m_send_file_seek_position; //當(dāng)前發(fā)送的文件位置
int m_send_file_length; //發(fā)送或接收的文件長(zhǎng)度
CString m_receive_file_name; //接收的文件名
// MessagePackage m_receive_file_buffer; //接收文件的緩沖區(qū)要傳給線程的呀
HANDLE m_send_file_thread_handle; //線程句柄用來(lái)取消發(fā)送或接收
//////////
CRect m_rect; //窗口的位置
CToolTipCtrl m_toolTip; //工具提示對(duì)象
CSetup m_setupDlg; //設(shè)置管理器
CString m_appName; //應(yīng)用程序目錄名
// Dialog Data
//{{AFX_DATA(CSecretChatDlg)
enum { IDD = IDD_SECRETCHAT_DIALOG };
CLabel m_friendNameStatic;
CLabel m_userNameStatic;
CEdit m_statusMessages;
CColorEdit m_messageNoteEdit;
CEdit m_messageEdit;
CString m_message;
CString m_messageNote;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSecretChatDlg)
public:
virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
public:
CButtonST m_connect;
CButtonST m_disconnection;
CButtonST m_publickeymanager;
CButtonST m_note;
CButtonST m_send_button;
CButtonST m_exit;
CButtonST m_getIP;
CButtonST m_setup;
CButtonST m_sendfile;
public:
CString GetFriendIP();//對(duì)方的IP地址
void disconnection_message(MessagePackage &msg);
BOOL CuoWuTiShi();
void send_file_comeback_scene();
BOOL prevent_connect();
void CloseSocket();
void receive_file(MessagePackage &msg);
void connect_succeed_update();
void signalled_friend_version();
void message_version(MessagePackage &msg);
void set_app_alias(CString app_alias);
void ReceiveRevert(MessagePackage &package);
void InitializationWindow();
void send_or_receive_tip(BOOL sendOrReceive);
CString GetFriendName();
CString GetUserName();
void Receive(MessagePackage &package);
void TrayIcon();
BOOL ValidatePublicKey();
BOOL ValidatePrivateKey();
BOOL AskPublicKey();
BOOL ClaimPublicKey(MessagePackage &msg);
BOOL RevertPublicKey(MessagePackage &msg);
BOOL MyUpdateData();
void PlayWaveSound(DWORD wave);
// Implementation
protected:
HICON m_hIcon;
HICON m_hOnline; //在線圖標(biāo)
HICON m_hOffline; //斷線圖標(biāo)
// Generated message map functions
//{{AFX_MSG(CSecretChatDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnTimer(UINT nIDEvent);
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnGetip();
afx_msg void OnNote();
afx_msg void OnSend();
afx_msg void OnConnectDisconnection();
afx_msg void OnSecretkey();
afx_msg void OnSetup();
afx_msg void OnUsername();
afx_msg void OnFriendname();
afx_msg void OnSendfile();
afx_msg void OnTop();
afx_msg void OnShow();
afx_msg void OnHide();
afx_msg void OnEmail();
afx_msg void OnHomepage();
afx_msg void OnHelp();
afx_msg void OnExit();
afx_msg void OnJiami();
afx_msg void OnAbout();
//}}AFX_MSG
afx_msg LRESULT RunHide(WPARAM wParam,LPARAM lParam); //運(yùn)行時(shí)隱藏窗口
afx_msg void OnMyIconNotify(WPARAM wParam,LPARAM lParam); //托盤圖標(biāo)響應(yīng)事件
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SECRETCHATDLG_H__1047F9F5_CF01_483A_8822_470EF4A132CF__INCLUDED_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -