CGfxOutBarCtrl֮BUGƪ
×÷Õß: ÀîÏþ·É
ÏÂÔØ±¾ÎÄÔ´´úÂë
ÎÒÊÇһλVC++µÄ³õѧÕߣ¬ËãÆðÀ´Ê±¼ä»¹²»µ½ËĸöÔ£¬µ«ÊÇÎÒ¼¸ºõÿÌì¶¼»á¹âÁÙVC֪ʶ¿âÍøÕ¾£¬ÎÒÊÇλ½çÃæ·¢ÉÕÓÑ£¬¶ÔÍøÕ¾ÉϵÄпؼþ¶¼ÊÇÒ»Ò»²»ÉáµÄ¸Ð¾õ¡£VC֪ʶ¿âÍøÕ¾½üÈÕ¿¯µÇµÄÒ»¸ö·ÂOutLookµÄ½çÃæÀàCGfxOutBarCtrlÎÒÏÂÔØºó·¢ÏÖÁËһЩÎÊÌ⣬¾õµÃÕâЩСÎÊÌâÓеãÓ°Ïì½çÃæÕûÌåµÄÃÀ¹Û£¬´ó·½£¬ËùÒÔÎÒÏë¹±Ï׳ö¸Ä½øºóµÄCGfxOutBarCtrlÈ«²¿´úÂë¡£
Ò»¡¢ÎÊÌâµÄÌá³ö
ÏÖÔÚÏÈÈÃÎÒÃÇÁгöCGfxOutBarCtrl´æÔÚµÄËùÓÐÎÊÌ⣬ȻºóÎÒÃÇÔÙÒ»Ò»½â¾ö£º
1£® Èç¹ûɾ³ýij¸ö·ÇTreeBarĿ¼ºó»á³öÏÖÈçÏÂͼËùʾµÄÇé¿ö£º
2£® ɾ³ýTreeBarĿ¼»á³öÏÖÈçÏÂͼËùʾµÄÇé¿ö£º

3£® ÁíÍâCgfxOutBarCtrlΪÎÒÃÇÌṩµÄÓÒ¼ü²Ëµ¥ÊÇ¡°ÄñÓ£¬ÎÒÃDZØÐë½øÐС°ºº»¯¡±¹¤×÷¡£
ÄÇô½ÓÏÂÀ´¾ÍÈÃÎÒÃÇÀ´Ò»Ò»½â¾öÕâЩÎÊÌâ°É¡£
¶þ¡¢ÎÊÌâµÄ½â¾ö
1£® ³öÏÖÎÊÌâ1µÄÇé¿öÊÇÒòΪÔÚÒÆ³ýÁËĿ¼(Folder)Ö®ºóCgfxOutBarCtrlÊÓÍ¼ÇøÓòûÓб»Ë¢ÐµÄÔÒò£¬²é¿´ÎļþGfxOutBarCtrl.cppÖеÄRemoveFolderº¯Êý²ÅÖªµÀËüÔÚɾ³ýÍêĿ¼ºóûÓнøÐÐÖ÷¶¯Ë¢Ð²Ù×÷£¬¶øÊDZ»¶¯µÄµÈ´ýWindowsµÄË¢ÐÂ֪ͨ¡£ÄÇô¾ÍÈÃÎÒÃÇÀ´Ö÷¶¯·¢Í¨ÖªÏûÏ¢À´ÈÃÊÓÍ¼ÇøÓò½øÐÐË¢ÐÂ(ÖØ»)²Ù×÷°É£¡±¾È˸տªÊ¼ÓÃSendMessage¸øCgfxOutBarCtrl·¢ËÍWM_SIZEÏûÏ¢À´ÈÃÊÓÍ¼ÇøË¢Ð£¬µ«ÊǺóÀ´ÎÒÔËÐÐÁËN¶à´ÎͻȻÓÖ·¢ÏÖÁËÔÀ´µÄÇé¿öÓÖ³öÏÖÁË£¬ËùÒÔÎÒÓÖÑо¿ÁËCgfxOutBarCtrlÀàµÄ½á¹¹£¬·¢ÏÖµ±Óû§±ä»»Á˵±Ç°Ä¿Â¼(Folder)ºó£¬CgfxOutBarCtrlÀà¶¼»áÖ÷¶¯µÄȥˢÐÂÖØ»æÊÓÍ¼Çø£¬¼ÈÈ»Èç´ËÎÒÃǾÍÎÞÐëÔÙд¶àÓàµÄ´úÂëÖ»ÐëÖ÷¶¯µÄÈ¥µ÷Óú¯Êý£ºSetSelFolder()¼´¿É¡£
2£® ³öÏÖÎÊÌâ2µÄÇé¿öÊÇÒòΪCgfxOutBarCtrlÀàÔÚRemoveFolderº¯ÊýÖнö½öɾ³ýÁËCBarFolderÀà³ÉÔ±¶ÔÏ󣬶øÃ»ÓÐɾ³ýµôCBarFolderÀàÖеÄCTreeCtrlÀàÖ¸ÕëËùÖ¸ÏòµÄCTreeCtrlÀà³ÉÔ±¶ÔÏó¡£ËùÒԲŻáÔì³ÉĿ¼±»É¾³ýÁ˵«Êµ¼ÊµÄCtreeCtrlÀà¶ÔÏó»¹´æÔÚµÄÇé¿ö¡£ÄÇôÎÒÃÇÖ»ÐëÔÚRemoveFolderº¯ÊýÖмÓÈëÊÍ·ÅCTreeCtrl¶ÔÏóµÄ´úÂë¼´¿É¡£
ÄÇôÐ޸ĺóµÄRemoveFolderº¯Êý´úÂëÈçÏ£º(¼ÓºÚ²¿·ÖΪ±¾ÈËÌí¼ÓµÄ´úÂë)
void CGfxOutBarCtrl::RemoveFolder(const int index)
{
ASSERT(index >= 0 && index < GetFolderCount());
CBarFolder * pbf = (CBarFolder *) arFolder.GetAt(index);
//Modified By Blue Sky WorkRoom
//Author:LiXiaoFei Date:2003Y-01M-14D::11:15
//Ô³ÌÐòδÊÍ·ÅFolderÖеÄ×Ó´°Ìå¿Õ¼äÔì³ÉÏÔʾ»ìÂÒ.
if(pbf->pChild)
{
::SendMessage(pbf->pChild->m_hWnd, WM_CLOSE, 0, 0);
//µÈ¼ÛÓÚ:pbf->pChild->DestroyWindow();
}
delete pbf;
arFolder.RemoveAt(index);
if (iSelFolder >= index) iSelFolder = index - 1;
if (iSelFolder < 0 && GetFolderCount() > 0) iSelFolder = 0;
//Modified By Blue Sky WorkRoom
//Author:LiXiaoFei Date:2003Y-01M-14D::11:35
//Ô³ÌÐòÔÚɾ³ý×Ó´°ÌåºóûÓиüÐÂÊÓÍ¼Çø£¬Ôì³ÉĿ¼ÏÔʾ»ìÂÒ.
//½â¾ö°ì·¨£º
// ÊÖ¹¤ÉèÖõ±Ç°Ò³Ãæ:SetSelFolder(iSelFolder);
SetSelFolder(iSelFolder);
Invalidate();
}
3£® CGfxOutBarCtrlÓÒ¼ü²Ëµ¥µÄºº»¯ÎÊÌâÆäʵֻÐèÒªÐÞ¸ÄGfxOutBarCtrl.cppÎļþÖеö#define¼´¿É¡£ÐÞ¸ÄÈçÏ£º
//ºº»¯¹¤×÷
#define _ID_GFX_SMALLICON "Сͼ±ê·ç¸ñ"
#define _ID_GFX_LARGEICON "´óͼ±ê·ç¸ñ"
//
#define _ID_GFX_REMOVEITEM "ɾ³ý×ÓÏî"
#define _ID_GFX_RENAMEITEM "×ÓÏîÖØÃüÃû"
ºÃÁË£¬¹ØÓÚCGfxOutBarCtrlÀàÖдæÔÚµÄÎÊÌâÎÒ¾ÍÏÈ˵µ½ÕâÀï°É£¬Èç¹û´ó¼ÒÔÚÒÔºóµÄʹÓùý³ÌÖÐÒ²·¢ÏÖÁËCGfxOutBarCtrlµÄBUG£¬¿ÉÒÔдÐŵ½lixiaofei@geasp.com¸æËßÎÒ£¬¸ÐлÁË£¡ÔÙ´ÎллVC֪ʶ¿âΪÎÒÃÇÌṩµÄ½»Á÷»ú»á¡£ |