?? mainfrm.cpp
字號:
m_bDragging=TRUE;
m_pDragImageList->BeginDrag(0,CPoint(0,0));
m_pDragImageList->DragEnter(NULL,pt);
SetCapture();
SetCursor(m_hDragCursor);
*pResult = 0;
}
void CLocFileView::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_bDragging)
{
CRect rect;
pServView->m_ctServFile.GetWindowRect(&rect);
ClientToScreen(&point);
if(rect.PtInRect(point))
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
else
SetCursor(m_hDragCursor);
m_pDragImageList->DragMove(point);
}
CFormView::OnMouseMove(nFlags, point);
}
void CLocFileView::OnLButtonUp(UINT nFlags, CPoint point)
{
if(m_bDragging)
{
extern CServFileView* pServView;
m_bDragging=FALSE;
CImageList::DragLeave(NULL);
CImageList::EndDrag();
ReleaseCapture();
delete m_pDragImageList;
m_pDragImageList=NULL;
CRect rect;
pServView->m_ctServFile.GetWindowRect(&rect);
ClientToScreen(&point);
if(rect.PtInRect(point))
OnLocFileSend();
}
CFormView::OnLButtonUp(nFlags, point);
}
void CLocFileView::OnLocFileSend()
{
CString str;
pServView->m_ctServDir.GetWindowText(str);
int i=0;
POSITION iPos;
i=m_ctLocFile.GetSelectedCount();
FILE_COUNT_INFO* pFileCount=new FILE_COUNT_INFO[i];
strcpy(szAppName,AfxGetAppName());
strcpy(szFtpName,m_pMainFrame->GetFtpName());
strcpy(szFtpUser,m_pMainFrame->GetFtpUser());
nPort=m_pMainFrame->GetFtpPort();
strcpy(szFtpPassword,m_pMainFrame->GetFtpPassword());
strcpy(Ftpdirectory,str);
m_ctLocDir.GetWindowText(str);
strcpy(Localdirectory,str);
nCount=i;
iPos=m_ctLocFile.GetFirstSelectedItemPosition();
for(int j=0;j<i;j++)
{
int nItem=m_ctLocFile.GetNextSelectedItem(iPos);
m_ctLocFile.GetItemText(nItem,0,pFileCount[j].fileName,256);
pFileCount[j].ufileFlag=m_ctLocFile.GetItemData(nItem);
}
if(!BeginSendFile((LPVOID)pFileCount))
AfxMessageBox("建立文件發(fā)送線程出錯");
}
void CLocFileView::OnLocFileOpen()
{
GetLocCurrentDirectory();
CString str=Localdirectory;
POSITION iPos=m_ctLocFile.GetFirstSelectedItemPosition();
int nItem=m_ctLocFile.GetNextSelectedItem(iPos);
int i=m_ctLocFile.GetItemData(nItem);
if(str.Right(1)=="\\")
str+=m_ctLocFile.GetItemText(nItem,0);
else
str+="\\"+m_ctLocFile.GetItemText(nItem,0);
if(i==FILEICON)
::ShellExecute(m_hWnd,NULL,str,"explore",Localdirectory,SW_SHOWDEFAULT);
else
{
strcpy(Localdirectory,str);
BeginFindLocFile();
}
}
void CLocFileView::OnLocFileDelete()
{
POSITION iPos=m_ctLocFile.GetFirstSelectedItemPosition();
if(!iPos)return;
SHFILEOPSTRUCT lpsh;
CString str;
int i=m_ctLocFile.GetSelectedCount();
ZeroMemory(&lpsh,sizeof(lpsh));
lpsh.hwnd= HWND_DESKTOP;
lpsh.fFlags=FOF_NOCONFIRMATION;
lpsh.wFunc=FO_DELETE;
for(int j=0;j<i;j++)
{
int nItem=m_ctLocFile.GetNextSelectedItem(iPos);
str=m_ctLocFile.GetItemText(nItem,0);
char buf[256];
strcpy(buf,str);
buf[str.GetLength()+1]='\0';
lpsh.pFrom=buf;
if( 0 != SHFileOperation(&lpsh))
AfxMessageBox("刪除文件出錯,請檢查");
}
::GetCurrentDirectory(MAX_PATH,Localdirectory);
BeginFindLocFile();
}
void CLocFileView::OnLocFileReName()
{
OnFileName(&m_ctLocFile);
}
void CLocFileView::OnRclickLocFile(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
int nItem=pNMListView->iItem;
if(nItem==-1)return;
SetPopMenu(0);
/* CMenu dMenu;
if(!dMenu.LoadMenu(IDR_LOC_SERV_MENU))
AfxThrowResourceException();
CMenu* pPopMenu=dMenu.GetSubMenu(0);
ASSERT(pPopMenu!=NULL);
POINT pt;
::GetCursorPos(&pt);
pPopMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pt.x,pt.y,AfxGetMainWnd()); */
*pResult = 0;
}
void CLocFileView::OnBeginlabeleditLocFile(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CLocFileView::OnEndlabeleditLocFile(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM * pItem=&pDispInfo->item;
int nItem=pItem->iItem;
CString str;
str=m_ctLocFile.GetItemText(nItem,0);
if(pItem->pszText)
{
m_ctLocFile.SetItemText(pItem->iItem,pItem->iSubItem,pItem->pszText);
::rename(str,pItem->pszText);
}
*pResult = 0;
}
LRESULT CLocFileView::OnSetLocDir(WPARAM wParam,LPARAM lParam)
{
CString str=(LPCTSTR)lParam;
m_ctLocDir.SetWindowText(str);
m_ctLocFile.SetRedraw(FALSE);
m_ctLocFile.DeleteAllItems();
m_ctLocFile.SetRedraw();
return 0L;
}
/////////////////////////////////////////////////////////////////////////////
// MyEdit
MyEdit::MyEdit(int iItem,int iSubItem,CString& szInitText,CListCtrl* pListCtrl)
{
m_listctrl=pListCtrl;
m_iItem=iItem;
m_Subitem=iSubItem;
m_inittext=szInitText;
m_IsEsc=FALSE;
}
MyEdit::~MyEdit()
{
}
BEGIN_MESSAGE_MAP(MyEdit, CEdit)
//{{AFX_MSG_MAP(MyEdit)
ON_WM_CHAR()
ON_WM_KILLFOCUS()
ON_WM_CREATE()
ON_WM_NCDESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// MyEdit message handlers
void MyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar==VK_ESCAPE||nChar==VK_RETURN)
{
if(nChar==VK_ESCAPE)
m_IsEsc=TRUE;
GetParent()->SetFocus();
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
CString str;
GetWindowText(str);
CWindowDC dc(this);
CFont* pFont=GetParent()->GetFont();
CFont* pFontDC=dc.SelectObject(pFont);
CSize size=dc.GetTextExtent(str);
dc.SelectObject(pFontDC);
size.cx+=5;
CRect rect,parentrect;
GetClientRect(&rect);
GetParent()->GetClientRect(&parentrect);
ClientToScreen(&rect);
GetParent()->ScreenToClient(&rect);
if(size.cx>rect.Width())
{
if(size.cx+rect.left<parentrect.right)
rect.right=rect.left+size.cx;
else
rect.right=parentrect.right;
MoveWindow(&rect);
}
}
void MyEdit::OnKillFocus(CWnd* pNewWnd)
{
CEdit::OnKillFocus(pNewWnd);
CString str;
GetWindowText(str);
LV_DISPINFO info;
info.hdr.hwndFrom=m_listctrl->m_hWnd;
info.hdr.idFrom=GetDlgCtrlID();
info.hdr.code=LVN_ENDLABELEDIT;
info.item.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
info.item.iItem=m_iItem;
info.item.iSubItem=m_Subitem;
info.item.pszText=m_IsEsc?NULL:(LPTSTR)(LPCTSTR)str;
info.item.cchTextMax=str.GetLength();
GetParent()->SendMessage(WM_NOTIFY,GetParent()->GetDlgCtrlID(),(LPARAM)&info);
DestroyWindow();
}
BOOL MyEdit::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->wParam==VK_RETURN||pMsg->wParam==VK_DELETE||pMsg->wParam==VK_ESCAPE||
GetKeyState(VK_CONTROL))
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return TRUE;
}
return CEdit::PreTranslateMessage(pMsg);
}
int MyEdit::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEdit::OnCreate(lpCreateStruct) == -1)
return -1;
CFont* font=GetParent()->GetFont();
SetFont(font);
SetWindowText(m_inittext);
SetFocus();
SetSel(0,-1);
return 0;
}
void MyEdit::OnNcDestroy()
{
CEdit::OnNcDestroy();
delete this;
}
BOOL CLocFileView::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE&&m_bDragging)
{
m_bDragging=FALSE;
CImageList::DragLeave(NULL);
CImageList::EndDrag();
ReleaseCapture();
delete m_pDragImageList;
return TRUE;
}
return CFormView::PreTranslateMessage(pMsg);
}
void CServFileView::OnBegindragServFile(NMHDR* pNMHDR, LRESULT* pResult)
{
if(m_bDragging)return;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
int nItem=pNMListView->iItem;
POINT pt=pNMListView->ptAction;
m_pDragImageList=m_ctServFile.CreateDragImage(nItem,&pt);
m_bDragging=TRUE;
m_pDragImageList->BeginDrag(0,CPoint(0,0));
m_pDragImageList->DragEnter(NULL,pt);
SetCapture();
}
void CServFileView::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_bDragging)
{
CRect rect;
pLocView->m_ctLocFile.GetWindowRect(&rect);
ClientToScreen(&point);
if(rect.PtInRect(point))
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
else
SetCursor(m_hDragCursor);
m_pDragImageList->DragMove(point);
}
CFormView::OnMouseMove(nFlags, point);
}
BOOL CServFileView::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE&&m_bDragging)
{
m_bDragging=FALSE;
CImageList::DragLeave(NULL);
CImageList::EndDrag();
ReleaseCapture();
delete m_pDragImageList;
return TRUE;
}
return CFormView::PreTranslateMessage(pMsg);
}
void CServFileView::OnLButtonUp(UINT nFlags, CPoint point)
{
if(m_bDragging)
{
m_bDragging=FALSE;
CImageList::DragLeave(NULL);
CImageList::EndDrag();
ReleaseCapture();
delete m_pDragImageList;
m_pDragImageList=NULL;
CRect rect;
pLocView->m_ctLocFile.GetWindowRect(&rect);
ClientToScreen(&point);
if(rect.PtInRect(point))
OnServFileDownload();
}
CFormView::OnLButtonUp(nFlags, point);
}
BOOL CServFileView::BeginReceiveFile(LPVOID pIn)
{
FILE_COUNT_INFO* fileInfo=(FILE_COUNT_INFO*)pIn;
if(m_pReceiveFileThread)
{
::WaitForSingleObject(m_pReceiveFileThread->m_hThread,100);
delete m_pReceiveFileThread;
m_pReceiveFileThread=NULL;
}
if(m_pReceiveFileThread=AfxBeginThread(CFtpThread::CFtp_Receivefile,(LPVOID)fileInfo,THREAD_PRIORITY_ABOVE_NORMAL,
0,CREATE_SUSPENDED,NULL))
{
m_pReceiveFileThread->m_bAutoDelete=FALSE;
m_pReceiveFileThread->ResumeThread();
return TRUE;
}
else
return FALSE;
}
void CServFileView::OnRclickServFile(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
int nItem=pNMListView->iItem;
if(nItem==-1)return;
SetPopMenu(1);
}
void CServFileView::OnBeginlabeleditServFile(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
*pResult = 0;
}
void CServFileView::OnEndlabeleditServFile(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM * pItem=&pDispInfo->item;
int nItem=pItem->iItem;
CString str;
FILE_CHANGE_INFO* fileInfo=new FILE_CHANGE_INFO;
str=m_ctServFile.GetItemText(nItem,0);
if(pItem->pszText)
{
strcpy(fileInfo->OldName,str);
strcpy(fileInfo->NewName,pItem->pszText);
if(!BeginRenameFile((LPVOID)fileInfo))
AfxMessageBox("建立文件重命名線程出錯,返回");
m_ctServFile.SetItemText(pItem->iItem,pItem->iSubItem,pItem->pszText);
}
*pResult = 0;
}
void CServFileView::OnBack()
{
CString str;
m_ctServDir.GetWindowText(str);
if(str.Right(1)=="/")return;
str+="/..";
m_ctServDir.SetWindowText(str);
m_ctServDir.Invalidate();
::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd,WM_COMMAND,IDC_QUICKCONNECT,0);
}
void CMainFrame::OnFileDisconnect()
{
CString outinfo;
outinfo="已中斷與";
outinfo+=szFtpName;
outinfo+="的連接";
// pFtpInfoView->SendMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)outinfo);
/*test */
// CMainFrame *pMain=(CMainFrame*)GetParentFrame();
CInfoListView* pview;
pview=(CInfoListView*)pMain->m_wndSplitter1.GetPane(1,0);
pview->GetListCtrl().InsertItem(0,outinfo);
m_bConnected=FALSE;
}
void CMainFrame::OnFileStop()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnUpdateFileDisconnect(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bConnected);
}
void CMainFrame::OnFileReconnect()
{
OnQuickconnect();
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rc;
GetClientRect(&rc);
int height=(int)( rc.Height()/17*11 );
if(isok)
m_wndSplitter1.SetRowInfo(0,height,0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -