📄 imgcategview.cpp
字号:
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = TRUE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = FALSE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnUpdateImgProperty(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnUpdateImgRemoveDir(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnUpdateImgRemoveFile(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnUpdateImgReplaceDir(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnUpdateImgReplaceFile(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnOptionImgSizeinfo()
{
// TODO: Add your command handler code here
//
POSITION pos = m_SizeInfo.GetStartPosition();
CDocument * pDoc = GetDocument();
ASSERT_VALID( pDoc );
OUT_BAR_PARAM obp;
obp.arrTxt.Add("Name");
obp.arrTxt.Add("Old Size(Bytes)");
obp.arrTxt.Add("New Size(Bytes)");
pDoc->UpdateAllViews(this, WM_OUTBAR_INSERT_CLMN, (CObject *)&obp);
CTreeCtrl &tc = GetTreeCtrl();
DWORD dwKey, dwOld, dwNew;
CString strTxt;
while( pos != NULL )
{
obp.arrTxt.RemoveAll();
m_SizeInfo.GetNextAssoc(pos, dwKey, dwOld, dwNew);
obp.arrTxt.Add( tc.GetItemText( (HTREEITEM)dwKey ) );
strTxt.Format( _T("%d"), dwOld );
obp.arrTxt.Add( strTxt );
strTxt.Format( _T("%d"), dwNew );
obp.arrTxt.Add( strTxt );
obp.dwData = dwKey;
pDoc->UpdateAllViews(this, WM_OUTBAR_ADD_ITEM, (CObject *)&obp);
}
CWnd * pFrame = (CWnd *)GetParentFrame();
_ASSERTE( pFrame != NULL );
pFrame->SendMessage(WM_SHOW_OUTBAR, SHOW_OUTBAR, 0);
}
void CImgCategView::OnUpdateOptionImgSizeinfo(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable( m_SizeInfo.GetStartPosition() != NULL );
}
void CImgCategView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class
if( pSender != this && lHint == WM_OUTBAR_GOTO )
{
this->SetFocus();
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = (HTREEITEM)pHint;
tc.SelectItem(hItem);
tc.EnsureVisible(hItem);
}
}
BOOL CImgCategView::EnumAndExportImgs( CDirFileNode * pParentNode, LPCTSTR pszPathName)
{
_ASSERTE( pParentNode != NULL && pszPathName != NULL );
CString strPathName = pszPathName;
CDirFileNode *pNode = pParentNode;
CDirFileInfo dfi;
if(pNode->bIsDir)
{
if( !::CreateDirectory(strPathName, NULL) )
{
if( GetLastError() != ERROR_ALREADY_EXISTS )
{
_ASSERTE( 0 );
return FALSE;
}
}
strPathName+="\\";
}
else
{
CString strFileName =strPathName+pNode->szName;
g_theApp.m_MMIRes.ExportImg(pNode->szID,strFileName);
return TRUE;
}
for( pNode = (CDirFileNode *)dfi.GetChild(pNode);
pNode != NULL; pNode = (CDirFileNode *)dfi.GetNext(pNode) )
{
CString strNewDir = strPathName;
if(pNode->bIsDir)
{
strNewDir+=pNode->szName;
}
if(!EnumAndExportImgs(pNode, strNewDir))
return FALSE;
}
return TRUE;
}
void CImgCategView::OnImgExportToDir()
{
// TODO: Add your command handler code here
//CFileDlg dlg(FALSE);
//dlg.SetFileExt(_T(".bmp"));
//dlg.SetFileFilter(_T("image define files (*.bmp)|*.bmp|All Files (*.*)|*.*||"));
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem == NULL )
hItem = TVI_ROOT;
CDirFileNode * pRoot = hItem != TVI_ROOT ?
(CDirFileNode *)tc.GetItemData(hItem) :
(CDirFileNode *)m_pInfo->GetRoot();
CFileDialog dlg(FALSE,
NULL,
pRoot->szName);
if(dlg.DoModal()== IDCANCEL)
return;
CString strDirName = dlg.GetPathName();
if( strDirName.IsEmpty() )
return;
CWaitCursor waitCur;
EnumAndExportImgs(pRoot,strDirName);
}
void CImgCategView::OnUpdateImgExportToDir(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnImgExportToFile()
{
// TODO: Add your command handler code here
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
_ASSERTE( hItem != NULL );
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
//CFileDlg dlg(FALSE);
//dlg.SetFileExt(_T(".bmp"));
//dlg.SetFileFilter(_T("image define files (*.bmp)|*.bmp|All Files (*.*)|*.*||"));
CFileDialog dlg(FALSE,
_T(".bmp"),
pNode->szName,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("image define files (*.bmp)|*.bmp|All Files (*.*)|*.*|"));
if(dlg.DoModal() == IDCANCEL)
return;
CString strFileName = dlg.GetPathName();
if( strFileName.IsEmpty() )
return;
CWaitCursor waitCur;
g_theApp.m_MMIRes.ExportImg(pNode->szID,strFileName);
}
void CImgCategView::OnUpdateImgExportToFile(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnImgAddDirCompress()
{
// TODO: Add your command handler code here
CFileDlg fdlg;
fdlg.SetHwnOwner(this->m_hWnd);//*@Hongliang Xin 2006-5-31
CString strDir = fdlg.GetSelectDir();
if( strDir.IsEmpty() )
return;
int n = strDir.ReverseFind('\\');
n=strDir.GetLength()-n-1;
if(n>128)
{
MessageBox(_T("The length of directory is no more than 128 characters at best!"));
return;
}
CWaitCursor waitCur;
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem == NULL )
hItem = TVI_ROOT;
CDirFileNode * pRoot = hItem != TVI_ROOT ?
(CDirFileNode *)tc.GetItemData(hItem) :
(CDirFileNode *)m_pInfo->GetRoot();
HTREEITEM hOldItem = tc.GetSelectedItem();
if( !EnumAndFillImgs(pRoot, hItem, strDir, TRUE) ) //不压缩
{
if( hItem != NULL && hItem != TVI_ROOT && hOldItem != hItem)
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
RemoveAllRes(pNode);
tc.DeleteItem(hItem);
}
AfxMessageBox(_T("Add directory fail!"));
}
else
{
SetModifiedFlag();
}
}
void CImgCategView::OnUpdateImgAddDirCompress(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = TRUE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = FALSE;
}
pCmdUI->Enable( bEnable );
}
void CImgCategView::OnImgReplaceDirCompress()
{
// TODO: Add your command handler code here
CFileDlg dlg;
dlg.SetHwnOwner(this->m_hWnd);//*@Hongliang Xin 2006-9-26
CString strDir = dlg.GetSelectDir();
if( strDir.IsEmpty() )
return;
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
_ASSERTE( hItem != NULL );
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( ReplaceDir(pNode, strDir, !g_theApp.IsSuperUser(), TRUE) )
SetModifiedFlag();
}
void CImgCategView::OnUpdateImgReplaceDirCompress(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnImgAddFileCompress()
{
// TODO: Add your command handler code here
CFileDlg fdlg;
fdlg.SetFileExt(SZ_FILE_EXT);
fdlg.SetFileFilter(SZ_FILTER);
CString strFileName = fdlg.GetPathName();
if( strFileName.IsEmpty() )
return;
int n = strFileName.ReverseFind('\\');
n=strFileName.GetLength()-n-1;
if(n>128)
{
MessageBox(_T("The length of filename is no more than 128 characters at best!"));
return;
}
CDirFileNode * pParent = NULL;
CTreeCtrl & tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem == NULL )
{
hItem = TVI_ROOT;
pParent = (CDirFileNode *)m_pInfo->GetRoot();
}
else
{
pParent = (CDirFileNode *)tc.GetItemData(hItem);
}
//@hongliang.xin 2006-9-26 添加图片不压缩
if( AddImgFile(&pParent, hItem, strFileName,TRUE) )
{
SetModifiedFlag();
}
else
{
AfxMessageBox(_T("Add file fail!"));
}
}
void CImgCategView::OnUpdateImgAddFileCompress(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = TRUE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = FALSE;
}
pCmdUI->Enable(bEnable);
}
void CImgCategView::OnImgReplaceFileCompress()
{
// TODO: Add your command handler code here
CFileDlg fdlg;
fdlg.SetFileExt(SZ_FILE_EXT);
fdlg.SetFileFilter(SZ_FILTER);
CString strFileName = fdlg.GetPathName();
if( strFileName.IsEmpty() )
return;
CTreeCtrl &tc = GetTreeCtrl();
HTREEITEM hItem = tc.GetSelectedItem();
_ASSERTE( hItem != NULL );
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
_ASSERTE( _tcslen(pNode->szID) > 0 );
if( ReplaceFile(pNode, strFileName, !g_theApp.IsSuperUser(), hItem, TRUE) )
{
CDocument * pDoc = GetDocument();
ASSERT_VALID( pDoc );
m_hBmp = g_theApp.m_MMIRes.GetImg(pNode->szID);
CHANGE_SEL_DATA selData;
selData.hBmp = m_hBmp;
selData.bFreshBg = TRUE;
pDoc->UpdateAllViews(this, WM_CHANGE_SEL_ITEM, (CObject*)&selData);
}
else
{
AfxMessageBox(_T("Replace the file content fail!"));
}
}
void CImgCategView::OnUpdateImgReplaceFileCompress(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CTreeCtrl &tc = GetTreeCtrl();
BOOL bEnable = FALSE;
HTREEITEM hItem = tc.GetSelectedItem();
if( hItem != NULL )
{
CDirFileNode * pNode = (CDirFileNode *)tc.GetItemData(hItem);
if( !m_pInfo->IsDirNode(pNode) )
bEnable = TRUE;
}
pCmdUI->Enable(bEnable);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -