📄 transferstatus.cpp
字号:
// TransferStatus.cpp : implementation file
//
#include "stdafx.h"
#include "Netmsg.h"
#include "TransferStatus.h"
#include "FileSend.h"
#include "Contact.h"
#include "FxFileSend.h"
#include "StatusThread.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTransferStatus dialog
#define CHECK_WND_P(x) if (!::IsWindow(x->m_hWnd)) return;
CTransferStatus::CTransferStatus(CWnd* pParent, CStatusThread *pStatusThread)
: CDialog(CTransferStatus::IDD, pParent)
{
StatusThread = pStatusThread;
//{{AFX_DATA_INIT(CTransferStatus)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CTransferStatus::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTransferStatus)
DDX_Control(pDX, IDC_XFERED, m_Xfered);
DDX_Control(pDX, IDC_TRANSFER, m_Transfer);
DDX_Control(pDX, IDC_FILETOTAL, m_FileTotal);
DDX_Control(pDX, IDC_TOFROM, m_ToFrom);
DDX_Control(pDX, IDC_STATUS, m_Status);
DDX_Control(pDX, IDC_FILENAME, m_FileName);
DDX_Control(pDX, IDC_PROGRESS, m_Progress);
//}}AFX_DATA_MAP
}
void CTransferStatus::InitStatus(CFileSocketThread *pThread, CContact *pContact, bool bSending, char *szFileName)
{
char buf[512];
CHECK_WND_P(this)
m_FileName.ModifyStyle(NULL, SS_PATHELLIPSIS);
strcpy(FileName, szFileName);
Contact = pContact;
Thread = pThread;
Sending = bSending;
m_Progress.SetRange(0, 100);
m_FileName.SetWindowText(pContact->Transfer->szFile);
sprintf(buf, "File size: %s", FormatBytes(pThread->FileLen));
m_FileTotal.SetWindowText(buf);
sprintf(buf, "%s: %s", Sending ? "To" : "From", Contact->GetScreenName());
m_ToFrom.SetWindowText(buf);
}
void CTransferStatus::SetPercent(int nPercent)
{
char buf[512], buf2[512];
CHECK_WND_P(this)
m_Progress.SetPos(nPercent);
nopath(buf2, FileName);
sprintf(buf, "%s %d%% of %s", Sending ? "Sent" : "Received", nPercent, buf2);
SetWindowText(buf);
}
void CTransferStatus::SetStats(unsigned long Total, unsigned long Transfered)
{
char buf[512];
CHECK_WND_P(this)
sprintf(buf, "Approx. transfer rate: %s/s", FormatBytes(Transfered));
m_Transfer.SetWindowText(buf);
sprintf(buf, "Transfered: %s", FormatBytes(Total));
m_Xfered.SetWindowText(buf);
}
void CTransferStatus::SetStatus(const char *Text)
{
char buf[512];
CHECK_WND_P(this)
strcpy(buf, "Status: ");
strcat(buf, Text);
m_Status.SetWindowText(buf);
}
void CTransferStatus::Remove()
{
CHECK_WND_P(this)
EndDialog(IDOK);
}
void CTransferStatus::Ended()
{
CHECK_WND_P(this)
CButton *Close = (CButton *)GetDlgItem(IDOK);
m_Transfer.SetWindowText("");
m_Xfered.SetWindowText("");
m_FileTotal.SetWindowText("");
Close->SetWindowText("Close");
}
BEGIN_MESSAGE_MAP(CTransferStatus, CDialog)
//{{AFX_MSG_MAP(CTransferStatus)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTransferStatus message handlers
void CTransferStatus::OnOK()
{
Thread->Kill();
CDialog::OnOK();
}
BOOL CTransferStatus::OnInitDialog()
{
CDialog::OnInitDialog();
StatusThread->Init = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTransferStatus::OnClose()
{
OnOK();
}
void CTransferStatus::OnCancel()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -