📄 filesharedlg.cpp
字号:
// FileShareDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NetQQ.h"
#include "FileShareDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFileShareDlg dialog
CFileShareDlg::CFileShareDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFileShareDlg::IDD, pParent)
{
m_pMainDlg = (CMainDlg*)pParent;
m_bPersonal = false;
m_bChangeUser = false;
//{{AFX_DATA_INIT(CFileShareDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CFileShareDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFileShareDlg)
DDX_Control(pDX, IDC_FILELIST, m_lstFileShare);
DDX_Control(pDX, IDC_PROGRESS, m_FileProgress);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFileShareDlg, CDialog)
//{{AFX_MSG_MAP(CFileShareDlg)
ON_BN_CLICKED(IDC_UPLOAD, OnUpload)
ON_BN_CLICKED(IDC_DOWNLOAD, OnDownload)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BTN_FILESHAREBRUSH, OnBtnFilesharebrush)
ON_WM_DESTROY()
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUT_MIN3, OnButMin)
ON_BN_CLICKED(IDC_BUT_CLOSE3, OnCloseWin)
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_BTN_F, OnBtnF)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_FILESHARE, OnFileShare)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileShareDlg message handlers
void CFileShareDlg::OnUpload()
{
// TODO: Add your control notification handler code here
DWORD exitCode = 0;
HANDLE handle = m_ftManage.GetLoadThreadHandle();
GetExitCodeThread(handle,&exitCode);
if(exitCode == STILL_ACTIVE)
{
//MessageBox("RUN");
CString msg = "有文件正在传输, 请稍后...";
GetDlgItem(IDC_STC0)->SetWindowText(msg);
return;
}
m_ftManage.SetPersonalStatus(m_bPersonal);
CString strUserId = m_pMainDlg->m_pLoadDlg->m_strUserId;
DWORD dwIp = m_pMainDlg->m_pLoadDlg->m_dwIp;
m_ftManage.UpLoadFile(this, strUserId, dwIp);
}
void CFileShareDlg::OnDownload()
{
// TODO: Add your control notification handler code here
DWORD exitCode = 0;
HANDLE handle = m_ftManage.GetLoadThreadHandle();
GetExitCodeThread(handle,&exitCode);
if(exitCode == STILL_ACTIVE)
{
//MessageBox("RUN");
CString msg = "有文件正在传输, 请稍后...";
GetDlgItem(IDC_STC0)->SetWindowText(msg);
return;
}
POSITION pos = m_lstFileShare.GetFirstSelectedItemPosition();
int nIndex = m_lstFileShare.GetNextSelectedItem(pos);
if(-1 == nIndex)
{
CString msg = "没有选择目标文件";
GetDlgItem(IDC_STC0)->SetWindowText(msg);
return;
}
CString strFileInfo[3];
strFileInfo[0] = m_lstFileShare.GetItemText(nIndex, 0);
strFileInfo[1] = m_lstFileShare.GetItemText(nIndex, 1);
strFileInfo[2] = m_lstFileShare.GetItemText(nIndex, 2);
DWORD dwIp = m_pMainDlg->m_pLoadDlg->m_dwIp;
m_ftManage.SetPersonalStatus(m_bPersonal);
m_ftManage.DownLoadFile(this, strFileInfo, dwIp);
}
void CFileShareDlg::OnOK()
{
}
void CFileShareDlg::OnCancel()
{
}
void CFileShareDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
DWORD exitCode = 0;
HANDLE handle = m_ftManage.GetLoadThreadHandle();
GetExitCodeThread(handle,&exitCode);
if(exitCode == STILL_ACTIVE)
{
//MessageBox("RUN");
int ret;
CString msg = "文件正在传输,关闭将终止文件传输,确定关闭吗?";
if(m_bChangeUser)//注销关闭
{
ret = IDOK;
}
else//正常关闭
{
ret = MessageBox(msg, "系统警告", MB_OKCANCEL | MB_ICONWARNING);
}
if(ret == IDOK)
{
_LoadThreadParam* pTmp = m_ftManage.GetLoadThreadParam();
TerminateThread(handle, exitCode);
Sleep(5);
if(!pTmp)
{
closesocket(pTmp->m_sUploadFile);
pTmp->m_pFile->Close();
delete pTmp;
}
CloseHandle(handle);
}
else
{
return;
}
}
CloseHandle(handle);
if(m_bPersonal)
{
m_pMainDlg->m_hPsPlaceWnd = NULL;
}
else
{
m_pMainDlg->m_hFileShareWnd = NULL;
}
OnDestroy();
}
void CFileShareDlg::OnFileShare(WPARAM wParam, LPARAM lParam)
{
//////////////////////////
//通知窗体是注销退出
if(lParam == 1999)
{
m_bChangeUser = true;
return;
}
//////////////////////////////////////////
//文件信息接收
CString strBuf = (char*)wParam;
CMsgBag mbTool;
long retFlat = mbTool.GetRetStatus(strBuf);
if(retFlat == 0)
{
if(m_bPersonal)
{
GetDlgItem(IDC_STC0)->SetWindowText("您没有个人存储记录");
}
else
{
GetDlgItem(IDC_STC0)->SetWindowText("无共享记录");
}
}
else if(retFlat == 2)
{
GetDlgItem(IDC_STC0)->SetWindowText("查询出错,请稍后再试!");
}
else if(retFlat == 1)
{
CString strFileIf[5];
mbTool.SplitDate(strBuf, strFileIf);
int nIndex = m_lstFileShare.GetItemCount();
m_lstFileShare.InsertItem(nIndex, strFileIf[0]);
for(int i = 1; i < 5; i++)
{
m_lstFileShare.SetItemText(nIndex, i, strFileIf[i]);
}
int nCount = m_lstFileShare.GetItemCount();
CString strFileCount;
if(m_bPersonal)
{
strFileCount.Format("您有%d条个人存储记录", nCount);
}
else
{
strFileCount.Format("共%d条共享记录", nCount);
}
GetDlgItem(IDC_STC0)->SetWindowText(strFileCount);
}
delete[] (char*)wParam;
}
BOOL CFileShareDlg::OnInitDialog()
{
CDialog::OnInitDialog();
/////////////////////////////////////////////////////////////////////////
//初始化列表控件
m_lstFileShare.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_lstFileShare.SetBkColor(RGB(223, 235, 255));
m_lstFileShare.SetTextBkColor(RGB(223, 235, 255));
m_lstFileShare.SetTextColor(RGB(32, 24, 14));
m_lstFileShare.InsertColumn(0, "文件ID", LVCFMT_LEFT, 50, 0);
m_lstFileShare.InsertColumn(1, "文件名", LVCFMT_LEFT, 130, 1);
m_lstFileShare.InsertColumn(2, "文件大小", LVCFMT_LEFT, 62, 2);
m_lstFileShare.InsertColumn(3, "拥有者", LVCFMT_LEFT, 67, 3);
m_lstFileShare.InsertColumn(4, "上传时间", LVCFMT_LEFT, 126, 4);
// TODO: Add extra initialization here
m_myButtonMin.AutoLoad(IDC_BUT_MIN3,this);
m_myButtonClose.AutoLoad(IDC_BUT_CLOSE3,this);
m_myButtonUp.AutoLoad(IDC_UPLOAD,this);
m_myButtonDown.AutoLoad(IDC_DOWNLOAD,this);
m_myButtonRef.AutoLoad(IDC_BTN_FILESHAREBRUSH,this);
m_ttToolTip.CreateToolTip(this);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFileShareDlg::OnBtnFilesharebrush()
{
// TODO: Add your control notification handler code here
Filesharebrush();
}
void CFileShareDlg::Filesharebrush()
{
m_lstFileShare.DeleteAllItems();
m_ftManage.SetPersonalStatus(m_bPersonal);
CMsgBag mbTool;
tagPacketParam pp;
CString strBuf;
if(m_bPersonal)
{
pp.order = "1014";
}
else
{
pp.order = "1009";
}
pp.paramNum = 0;
mbTool.DataPackage(strBuf, &pp);
(m_pMainDlg->m_pLoadDlg->GetCClntSock()).OnSend(strBuf);
}
void CFileShareDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
delete this;
}
void CFileShareDlg::SetPersonalStatus(bool bStatus)
{
m_bPersonal = bStatus;
}
void CFileShareDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialog::OnLButtonDown(nFlags, point);
}
void CFileShareDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRgn m_rgn;
CRect rcWnd;
GetWindowRect(rcWnd);
m_rgn.m_hObject = CreateRoundRectRgn(0,0,rcWnd.Width(), rcWnd.Height(),20, 20 );
this->SetWindowRgn(m_rgn,true);
// Do not call CDialog::OnPaint() for painting messages
}
void CFileShareDlg::OnButMin()
{
// TODO: Add your control notification handler code here
PostMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
void CFileShareDlg::OnCloseWin()
{
// TODO: Add your control notification handler code here
OnClose();
}
BOOL CFileShareDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(m_ttToolTip.GetToolTip().m_hWnd)
m_ttToolTip.GetToolTip().RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
void CFileShareDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_ttToolTip.AddToolTip("关闭窗口", GetDlgItem(IDC_BUT_CLOSE3));
m_ttToolTip.AddToolTip("上传", GetDlgItem(IDC_UPLOAD));
m_ttToolTip.AddToolTip("下载", GetDlgItem(IDC_DOWNLOAD));
m_ttToolTip.AddToolTip("刷新", GetDlgItem(IDC_BTN_FILESHAREBRUSH));
m_ttToolTip.AddToolTip("最小化窗口", GetDlgItem(IDC_BUT_MIN3));
CDialog::OnMouseMove(nFlags, point);
}
void CFileShareDlg::OnBtnF()
{
// TODO: Add your control notification handler code here
CWnd* pWnd = GetFocus();
if(pWnd == GetDlgItem(IDC_UPLOAD))
{
OnUpload();
}
else if(pWnd == GetDlgItem(IDC_DOWNLOAD))
{
OnDownload();
}
else
{
Filesharebrush();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -