亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imgcategview_helper.cpp

?? Resource editor base speadrum Chinese mobile
?? CPP
字號:
// PicCategView_Helper.cpp : implementation file
//

#include "stdafx.h"
#include "resourceeditor.h"
#include "ImgCategView.h"

#include "DirFileInfo.h"
#include "FileDlg.h"
#include "ItemDlg.h"
#include "Util.h"
#include "RenameDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BOOL CImgCategView::AddImgDir(CDirFileNode ** ppNode, 
							  HTREEITEM & hItem, 
							  LPCTSTR pszDirName )
{
    _ASSERTE( ppNode != NULL && pszDirName != NULL );

    CDirFileNode * pNode = (CDirFileNode *)m_pInfo->MallocNode();
    if( NULL == pNode )
        return FALSE;

    CString strDir = pszDirName;
    strDir.TrimRight(_T('\\'));
    LPCTSTR pszDir = strDir.GetBuffer(0);
    LPCTSTR pszFind = _tcsrchr(pszDir, _T('\\'));
    if( pszFind == NULL )
        pszFind = pszDir;
    else
        pszFind++;

    pNode->bIsDir = TRUE;

//xb
	CString strNewName;
    if(!DoCheckAndRenameDir(*ppNode,pszFind,strNewName))
	{
		strDir.ReleaseBuffer();
		return FALSE;
	}
	_tcscpy(pNode->szID, g_theApp.m_MMIRes.MakeImgID(strNewName));
	_tcscpy(pNode->szName, strNewName);
    strDir.ReleaseBuffer();
//xe*/


    m_pInfo->AddChild(*ppNode, pNode);

    CTreeCtrl &tc = GetTreeCtrl();
    HTREEITEM hInsert = tc.InsertItem(strNewName, IMG_COLL_IDX, IMG_COLL_SEL_IDX, hItem);
   
	_ASSERTE( hInsert != NULL );

    tc.SetItemData(hInsert, (DWORD)pNode);

    *ppNode = pNode;
    hItem   = hInsert;

    return TRUE;
}

BOOL CImgCategView::AddImgFile(CDirFileNode ** ppNode, 
							   HTREEITEM & hItem, 
							   LPCTSTR pszFileName, 
							   BOOL bCompressed /*= TRUE*/ )
{
    _ASSERTE( ppNode != NULL && pszFileName != NULL );

    CDirFileNode * pParentNode = *ppNode;
    HTREEITEM      hParentItem = hItem;

    CString strFileName;

    CMMIRes &mmires = g_theApp.m_MMIRes;
    CString strID = mmires.MakeImgID(pszFileName);

    if( !g_theApp.DoCheckAndRename(pszFileName, strID, strFileName) )
    {
        TRACE0("g_theApp.DoCheckAndRename() fail in AddImgFile()\r\n");
        return FALSE;
    }

    //@hongliang xin 2006-9-25 添加bCompressed參數
	if( !mmires.AddImg(strID, pszFileName, bCompressed) )
    {
        AfxMessageBox(mmires.GetErrMsg());
        return  FALSE;
    }

    PIMGINFO pImgInfo = NULL;
    mmires.m_mapImg.Lookup(strID, pImgInfo);
    _ASSERTE( pImgInfo != NULL );
    LPBYTE pBmp = pImgInfo->pOriginal;

    PBITMAPINFOHEADER pbih = (PBITMAPINFOHEADER)(pBmp + sizeof(BITMAPFILEHEADER));

    CDirFileNode * pNode = (CDirFileNode *)m_pInfo->MallocNode();
    if( NULL == pNode )
    {
        AfxMessageBox(_T("Memory no enough!"));
        mmires.DeleteImg(strID);
        return FALSE;
    }
    m_pInfo->ZeroNode(pNode);
    pNode->nWidth  = pbih->biWidth;
    pNode->nHeight = pbih->biHeight;

    LPCTSTR pName = strFileName.GetBuffer(0);
    LPCTSTR pFind = _tcsrchr(pName, _T('\\'));
    if( pFind != NULL )
        pFind++;
    else
        pFind = pName;

    _tcscpy(pNode->szID, strID);
    _tcscpy(pNode->szName, pFind);
   
    CTreeCtrl & tc = GetTreeCtrl();

    HTREEITEM hInsert = tc.InsertItem(pFind, IMG_IDX, IMG_SEL_IDX, hParentItem );
    strFileName.ReleaseBuffer();

    tc.SetItemData( hInsert, (DWORD)pNode );
  
    m_pInfo->AddChild(pParentNode, pNode);

    *ppNode = pNode;
    hItem   = hInsert;

    return TRUE;
}

BOOL CImgCategView::EnumAndFillImgs( CDirFileNode * pParentNode, 
									 HTREEITEM &hParentItem, 
									 LPCTSTR pszPathName, 
									 BOOL bCompressed /*= TRUE*/ )
{
    _ASSERTE( pParentNode != NULL && pszPathName != NULL );

    BOOL      bRet        = FALSE;
    CString   strPathName = pszPathName;
    HTREEITEM hOldParent  = hParentItem;
    HTREEITEM hItem       = NULL;
    CUtil     fileUtil, dirUtil;

    {
        bRet = AddImgDir(&pParentNode, hParentItem, pszPathName);
        hOldParent = hParentItem;
        
        strPathName.TrimRight(_T('\\'));
        strPathName += _T("\\*.*");
        
        WIN32_FIND_DATA wfd = { 0 };
        HANDLE hFind = ::FindFirstFile(strPathName, &wfd);
        _ASSERTE( hFind != INVALID_HANDLE_VALUE );
        
        ::FindNextFile(hFind, &wfd);
        while( ::FindNextFile(hFind, &wfd) && bRet )
        {
            strPathName = pszPathName;
            strPathName.TrimRight(_T('\\'));
            
            strPathName += _T('\\');
            strPathName += wfd.cFileName;
            
            LPCTSTR pExt = _tcsrchr(wfd.cFileName, _T('.'));
            if( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
            {
                dirUtil.AddStr(strPathName);
            }
            else  if( pExt != NULL && _tcsicmp(pExt, SZ_FILE_EXT) == 0 )
            {
                fileUtil.AddStr(strPathName);
            }        
        }
        ::FindClose(hFind);

        CDirFileNode * pChild = pParentNode;
        HTREEITEM      hItem  = hParentItem;
        fileUtil.SortStr();
        int nCount = fileUtil.GetStrSize();
        for( int i = 0; bRet && i < nCount; ++i )
        {
            pChild = pParentNode;
            hItem  = hParentItem;
            bRet = AddImgFile(&pChild, hItem, fileUtil.GetStr(i), bCompressed);
        }
        fileUtil.RemoveAll();
    }

    dirUtil.SortStr();
   
    hItem  = hParentItem;
    int nCount = dirUtil.GetStrSize();
    for( int i = 0; bRet && i < nCount; ++i )
    {
        bRet = EnumAndFillImgs( pParentNode, hItem, dirUtil.GetStr(i),bCompressed );
        hItem = hParentItem;
    }
    dirUtil.RemoveAll();

    hParentItem = hOldParent;

    return bRet;
}

BOOL CImgCategView::RemoveAllRes(CDirFileNode *pNode)
{
    _ASSERTE( pNode != NULL );

    RecursiveRemoveAllRes(pNode);

    m_pInfo->RemoveNode(pNode);

    return TRUE;
}

BOOL CImgCategView::RecursiveRemoveAllRes(CDirFileNode *pNode)
{
    if( pNode == NULL )
        return TRUE;

    CDirFileNode * pChild = (CDirFileNode *)m_pInfo->GetChild(pNode);
	while ( NULL != pChild )
	{
		CDirFileNode * pNext = (CDirFileNode *)m_pInfo->GetNext(pChild);
        	
		RecursiveRemoveAllRes( pChild );
                
		pChild = pNext;
	}
	
    if( !m_pInfo->IsHasChild(pNode) )
    {
        CMMIRes &mmires = g_theApp.m_MMIRes;
        mmires.DeleteImg(pNode->szID);
    }
   
    return TRUE;
}

BOOL CImgCategView::CheckBmpSize(LPCTSTR pszFileName, CSize &sizeBmp)
{
    _ASSERTE( pszFileName != NULL );
    _ASSERTE( sizeBmp.cx > 0 && sizeBmp.cy > 0 );

    HANDLE hFile = ::CreateFile( pszFileName, GENERIC_READ, FILE_SHARE_READ,
                                 NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
                                 NULL );
    if( hFile == INVALID_HANDLE_VALUE )
    {
        CString strMsg;
        strMsg.Format(_T("The file %s not exist!"), pszFileName);

        AfxMessageBox(strMsg);
        return FALSE;
    }

    DWORD dwRead = 0;
    BITMAPFILEHEADER bfh = { 0 };
    VERIFY( ReadFile(hFile, &bfh, sizeof(BITMAPFILEHEADER), &dwRead, NULL) );

    BITMAPINFOHEADER bih = { 0 };
    VERIFY( ReadFile(hFile, &bih, sizeof(BITMAPINFOHEADER), &dwRead, NULL) );

    CloseHandle(hFile);

    if( bfh.bfType != 0x4d42 )
    {
        CString strMsg;
        strMsg.Format(_T("The file \"%s\" isn't a bitmap file!"), pszFileName);
        AfxMessageBox(strMsg);

        return FALSE;
    }

    if( sizeBmp.cx != bih.biWidth || sizeBmp.cy != bih.biHeight )
    {
        CString strMsg;
        strMsg.Format(_T("The file \"%s\" isn't %d * %d!"), pszFileName, sizeBmp.cx, sizeBmp.cy);
        AfxMessageBox(strMsg);

        return FALSE;
    }

    return TRUE;
}

BOOL CImgCategView::ReplaceDir(CDirFileNode *pNode, 
							   LPCTSTR pszDir, 
							   BOOL bCheck /* = FALSE */, 
							   BOOL bCompressed /*= TRUE*/)
{
    _ASSERTE( m_pInfo != NULL && pNode != NULL);
    _ASSERTE( pszDir != NULL );

    CDirFileNode * pChild = (CDirFileNode *)m_pInfo->GetChild(pNode);
    BOOL bReplaced = FALSE;
    
    RecursiveReplaceDir(pChild, pszDir, bReplaced, bCheck, bCompressed);

    return bReplaced;
}

BOOL CImgCategView::RecursiveReplaceDir(CDirFileNode * pNode, 
										LPCTSTR pszDir, 
										BOOL &bReplaced, 
										BOOL bCheck /* = FALSE */, 
										BOOL bCompressed /*= TRUE*/)
{
    _ASSERTE( m_pInfo != NULL );
    _ASSERTE( pszDir != NULL );
    
	static int i =1;

    if( pNode == NULL )
        return TRUE;
    
    CString strDir    = pszDir;
    BOOL    bRet      = TRUE;
    BOOL    bContinue = FALSE;
    
    CTreeCtrl &tc   = GetTreeCtrl();
    HTREEITEM hSel  = tc.GetSelectedItem();
    _ASSERTE( hSel != NULL );
    {
        CDirFileNode * pSel = (CDirFileNode *)tc.GetItemData(hSel);
        _ASSERTE(pSel != NULL);
    
        for( CDirFileNode * pTemp = pNode; pTemp != NULL && pTemp != pSel; pTemp = (CDirFileNode *)m_pInfo->GetParent(pTemp) )
        {
			if( m_pInfo->GetNext(pTemp) != NULL )
            {
                bContinue = TRUE;
                break;
            }
        }
    }

    strDir += _T("\\");
    strDir += pNode->szName;
    if( m_pInfo->IsDirNode(pNode) )
    {
        CDirFileNode * pChild = (CDirFileNode *)m_pInfo->GetChild(pNode);
        //_ASSERTE( pChild != NULL );
		if(pChild != NULL)
			bRet = RecursiveReplaceDir(pChild, strDir, bReplaced, bCheck, bCompressed);
		else
			bRet = TRUE;
    }
    else if( !ReplaceFile(pNode, strDir, bCheck, hSel, bCompressed) ) //@hongliang.xin 2006-9-26 添加壓縮參數
    {
        CString strMsg;
        strMsg.Format(_T("Replace \"%s\" fail! Continue?"), pNode->szName);
        if( bContinue && AfxMessageBox(strMsg, MB_YESNO) == IDNO )
            return FALSE;
    }
    else
    {
        bReplaced = TRUE;
    }    
	i++;
	CString str2;
	str2.Format(_T("%d"),i);
    //if(i>10)
	//	AfxMessageBox(str2);   

    strDir = pszDir;   

    if( bRet && bContinue )
       bRet = RecursiveReplaceDir((CDirFileNode *)m_pInfo->GetNext(pNode), 
	             strDir, bReplaced, bCheck, bCompressed);//@hongliang.xin 2006-9-26 添加壓縮參數
	
	return bRet;
}

BOOL CImgCategView::ReplaceFile(CDirFileNode *pNode, 
								LPCTSTR pszFileName, 
                                BOOL bCheck /* = FALSE */,
								HTREEITEM hItem /* = NULL */, 
								BOOL bCompressed /*= TRUE*/ )
{
    _ASSERTE( pNode != NULL && pszFileName != NULL );

    CSize sizeBmp( pNode->nWidth, pNode->nHeight );
    if( bCheck && !CheckBmpSize(pszFileName, sizeBmp) )
        return FALSE;
  
    if( hItem != NULL )
    {
        m_SizeInfo.DeleteByHandle( (DWORD)hItem);
    }

    UINT uOld = 0;
    UINT uNew = 0;
    CMMIRes &mmires = g_theApp.m_MMIRes;
	//@hongliang.xin 2006-9-26 添加壓縮參數
    if( mmires.ReplaceImg(pNode->szID, pszFileName, bCheck, &uOld, &uNew, bCompressed) )
    {
        PIMGINFO pImgInfo = NULL;
        VERIFY( mmires.m_mapImg.Lookup(pNode->szID, pImgInfo) );

        PBITMAPFILEHEADER pbfh = (PBITMAPFILEHEADER)pImgInfo->pOriginal;
        PBITMAPINFOHEADER pbih = (PBITMAPINFOHEADER)(pbfh + 1);

        pNode->nWidth  = pbih->biWidth;
        pNode->nHeight = pbih->biHeight;

        if( hItem != NULL && uNew > uOld )
        {
            m_SizeInfo.SetSizeInfo( (DWORD)hItem, uOld, uNew);
        }

	    SetModifiedFlag();
        return TRUE;
    }
    else
    {
        AfxMessageBox(g_theApp.m_MMIRes.GetErrMsg() );
    }

    return FALSE;
}

void CImgCategView::RemoveSizeInfo( HTREEITEM hItem )
{
    if( NULL == hItem )
        return;

    CTreeCtrl &tc = GetTreeCtrl();

    m_SizeInfo.DeleteByHandle( (DWORD)hItem );

    for( HTREEITEM hChild = tc.GetChildItem(hItem); hChild != NULL; 
         hChild = tc.GetNextSiblingItem(hChild) )
    {
        RemoveSizeInfo(hChild);
    }
}

BOOL CImgCategView::RenameDir( CDirFileNode * pParentNode,LPCTSTR pszOldName, CString &strNewName)
{
	CString strOldName(pszOldName);
    _ASSERTE( !strOldName.IsEmpty() );

    CRenameDlg dlg;
    dlg.m_strAdded  = strOldName;
    dlg.m_strAdding = strNewName;
	dlg.m_bDirFile  = TRUE;
	dlg.m_pParentNode = pParentNode;
	dlg.m_pDirFileInfo= m_pInfo;

    if( dlg.DoModal() == IDOK )
    {
        strNewName = dlg.m_strNewName;
        return TRUE;
    }
	else
		return FALSE;
}

BOOL CImgCategView::DoCheckAndRenameDir( CDirFileNode * pParentNode, LPCTSTR pszOldName, CString &strNewName)
{
	CDirFileNode * pCNode =(CDirFileNode *)m_pInfo->GetChild(pParentNode);
	while(pCNode != NULL)
	{
		if(_tcscmp(pCNode->szName, pszOldName)==0)
		{
			if(AfxMessageBox(_T("This directory already exist,\ndo you rename it?"), MB_YESNO)==IDNO)
				return FALSE;
			
			return RenameDir(pParentNode,pszOldName,strNewName);	
		
		}
        pCNode = (CDirFileNode *)m_pInfo->GetNext(pCNode);
	}
	strNewName = pszOldName;
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区久久婷婷| 日韩精品一区二区三区蜜臀| 欧美成人vps| 亚洲男人天堂一区| 国产一区二区三区美女| 欧美精品在线观看播放| 亚洲欧美日韩一区二区三区在线观看| 免费精品视频在线| 欧美亚洲动漫另类| 国产精品久久久久久久久免费樱桃| 青青草97国产精品免费观看| 欧洲另类一二三四区| 国产精品久久久久桃色tv| 国产一区二区三区av电影 | 一本到高清视频免费精品| 欧美精品一区男女天堂| 青娱乐精品视频| 欧美中文字幕亚洲一区二区va在线| 国产精品丝袜一区| 国产乱码精品一区二区三区忘忧草 | 亚洲欧美色综合| 成人网男人的天堂| 久久久久国产精品人| 蜜臀av亚洲一区中文字幕| 欧美二区三区的天堂| 一区二区三区国产| 91蝌蚪国产九色| 国产精品视频你懂的| 国产成人av网站| 久久夜色精品国产欧美乱极品| 日产国产欧美视频一区精品| 欧美日韩日日骚| 亚洲国产综合色| 欧美无人高清视频在线观看| 亚洲一区二区三区在线看| 91成人网在线| 亚洲一区二区中文在线| 在线看日本不卡| 亚洲午夜久久久久中文字幕久| 色狠狠av一区二区三区| 一区二区三区中文在线观看| 91看片淫黄大片一级在线观看| 一区在线观看视频| 91网页版在线| 亚洲精品欧美激情| 日本精品视频一区二区| 亚洲成人免费视频| 91精品国产欧美一区二区18| 美女www一区二区| xfplay精品久久| 国产高清精品在线| 国产精品福利一区二区三区| 色综合久久久久网| 亚洲第一精品在线| 日韩一卡二卡三卡| 国产在线精品免费| 国产精品久久精品日日| 91麻豆国产福利在线观看| 亚洲一级二级三级| 欧美一区二区在线免费观看| 极品少妇xxxx偷拍精品少妇| 国产欧美一区二区精品婷婷 | 国产一二精品视频| 久久久久久久综合色一本| 处破女av一区二区| 一区二区三区资源| 欧美美女一区二区| 激情另类小说区图片区视频区| 国产色爱av资源综合区| 91麻豆国产福利在线观看| 午夜视频在线观看一区| 亚洲精品一区二区三区精华液 | 免费的成人av| 久久久亚洲精品一区二区三区| 99久久综合国产精品| 亚洲影院在线观看| 日韩欧美高清在线| youjizz久久| 欧洲一区在线观看| 美国三级日本三级久久99| 国产亚洲短视频| 欧美三级日韩在线| 激情久久五月天| 亚洲色图视频网站| 91精品国产综合久久久久| 国产99久久久国产精品潘金| 亚洲一区二区三区在线看| 精品少妇一区二区三区视频免付费 | 成人免费视频一区| 亚洲一区在线观看网站| 久久久五月婷婷| 精品视频色一区| 国产大陆精品国产| 午夜精品福利一区二区三区蜜桃| 欧美mv日韩mv国产网站| 在线影院国内精品| 狠狠色狠狠色合久久伊人| 亚洲精品日产精品乱码不卡| 精品国产一区二区三区久久久蜜月 | 91视频你懂的| 黄页网站大全一区二区| 亚洲影院理伦片| 日本一区二区三区免费乱视频 | 高清视频一区二区| 日韩在线一二三区| 日韩美女久久久| 精品捆绑美女sm三区| 在线亚洲一区二区| 国产白丝精品91爽爽久久| 日日欢夜夜爽一区| 亚洲日本护士毛茸茸| 精品福利av导航| 欧美日本一道本| 91网站在线观看视频| 国产福利不卡视频| 日韩高清不卡在线| 亚洲影院在线观看| 自拍偷在线精品自拍偷无码专区| 精品免费99久久| 欧美高清dvd| 欧洲国产伦久久久久久久| 岛国一区二区三区| 精品一区二区免费在线观看| 亚洲国产毛片aaaaa无费看| 国产精品久久久久久一区二区三区| 日韩欧美中文字幕公布| 欧美在线三级电影| www.日本不卡| 粉嫩av一区二区三区在线播放 | 狠狠色丁香婷婷综合| 丝袜诱惑制服诱惑色一区在线观看 | 久久久久久99精品| 欧美一三区三区四区免费在线看| 在线亚洲免费视频| 色悠悠亚洲一区二区| 不卡的av电影| 丁香五精品蜜臀久久久久99网站| 久久99热99| 在线观看免费视频综合| 97se亚洲国产综合自在线| 国产乱码精品1区2区3区| 久久超碰97中文字幕| 日本特黄久久久高潮| 偷拍自拍另类欧美| 亚洲一区二区三区小说| 亚洲男人电影天堂| 亚洲黄网站在线观看| 亚洲精品中文字幕乱码三区| 亚洲欧美一区二区视频| 国产精品久久久久三级| 欧美激情一区二区| 国产精品免费av| 中文欧美字幕免费| 国产精品福利在线播放| 亚洲天堂免费看| 亚洲蜜桃精久久久久久久| 综合中文字幕亚洲| 亚洲精品亚洲人成人网| 亚洲一区免费观看| 无码av免费一区二区三区试看| 五月天国产精品| 日韩电影在线观看一区| 久久不见久久见免费视频1| 久久精品国产成人一区二区三区| 精品一区二区三区在线播放视频| 久久国产婷婷国产香蕉| 精东粉嫩av免费一区二区三区 | 亚洲自拍偷拍av| 亚洲高清在线精品| 日韩精品1区2区3区| 免费久久99精品国产| 国产综合色视频| 成人免费视频播放| 色哟哟一区二区在线观看| 欧美天堂一区二区三区| 欧美一级高清大全免费观看| 精品久久一二三区| 中文在线免费一区三区高中清不卡| 中文字幕中文字幕在线一区| 夜夜精品视频一区二区| 日韩电影网1区2区| 国产精品18久久久久久久久久久久| 成人自拍视频在线观看| 一本大道久久a久久综合婷婷| 欧美色窝79yyyycom| 日韩一区二区精品葵司在线 | 欧美二区三区91| 久久伊99综合婷婷久久伊| 国产精品美女视频| 亚洲综合精品久久| 经典三级在线一区| 97se亚洲国产综合自在线| 欧美日本在线视频| 久久午夜国产精品| 亚洲日本中文字幕区| 日韩国产在线一| 国产精品 日产精品 欧美精品| 色噜噜狠狠色综合中国| 欧美变态tickle挠乳网站| 中文字幕高清一区|