⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgcategview.cpp

📁 Resource editor base speadrum Chinese mobile
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -