// Copyright (c) Iuri Apollonio 1998
// Use & modify as you want & need, and leave those 3 lines.
// http://www.codeguru.com
// GfxOutBarCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"//"OutWAts1.h"
#include "GfxOutBarCtrl.h"
#include "GfxGroupEdit.h"
#include "GfxPopupMenu.h"
#define _ID_GFX_SMALLICON "小图标方式"
#define _ID_GFX_LARGEICON "大图标方式"
#define _ID_GFX_ADDAGROUP "添加组"
#define _ID_GFX_FONTCOLOR "改变字体颜色"
#define _ID_GFX_BACKCOLOR "改变背景颜色"
#define _ID_GFX_REMOVEITEM "从该组中删除"
#define _ID_GFX_RENAMEITEM "改名"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGfxOutBarCtrl
IMPLEMENT_DYNCREATE(CGfxOutBarCtrl, CWnd)
CGfxOutBarCtrl::CGfxOutBarCtrl()
{
//crBackGroundColor = GetSysColor(COLOR_BACKGROUND);//RGB(0,128,128);//
crBackGroundColor =RGB(100,149,237);
crBackGroundColor1 = GetSysColor(COLOR_BACKGROUND);
crTextColor = GetSysColor(COLOR_WINDOW);
cr3dFace = GetSysColor(COLOR_3DFACE);
crLightBorder = GetSysColor(COLOR_3DLIGHT);
crHilightBorder = GetSysColor(COLOR_3DHILIGHT);
crShadowBorder = GetSysColor(COLOR_3DSHADOW);
crDkShadowBorder = GetSysColor(COLOR_3DDKSHADOW);
pBlackPen = new CPen(PS_SOLID, 1, RGB(0,0,0));
iFolderHeight = 22;
dwFlags = fDragItems|fEditGroups|fEditItems|fRemoveGroups|fRemoveItems|fAddGroups|fAnimation|fSelHighlight;
iSelFolder = 1;
iLastFolderHighlighted = -1;
iLastSelectedFolder = -1;
pLargeImageList = NULL;
pSmallImageList = NULL;
iFirstItem = 0;
xSmallIconLabelOffset = 4;
yLargeIconLabelOffset = 3;
ySmallIconSpacing = 10;
yLargeIconSpacing = 8;
xLeftMargin = 5;
yTopMargin = 5;
bUpArrow = bDownArrow = false;
hHandCursor = AfxGetApp()->LoadCursor(IDC_HANDCUR);
rcUpArrow = rcDownArrow = CRect(0,0,0,0);
bUpPressed = bDownPressed = false;
bLooping = false;
iLastItemHighlighted = -1;
bPressedHighlight = false;
iLastDragItemDraw = -1;
lAnimationTickCount = 10;
hDragCursor = AfxGetApp()->LoadCursor(IDC_DRAGGING);
hNoDragCursor = AfxGetApp()->LoadCursor(IDC_NODRAGGING);
iLastSel = -1;
iSelAnimCount = 0;
iSelAnimTiming = 0;
}
CGfxOutBarCtrl::~CGfxOutBarCtrl()
{
for (int t = 0; t < arFolder.GetSize(); t++)
{
if (arFolder.GetAt(t)) delete (CBarFolder*) arFolder.GetAt(t);
}
arFolder.RemoveAll();
delete pBlackPen;
}
BEGIN_MESSAGE_MAP(CGfxOutBarCtrl, CWnd)
//{{AFX_MSG_MAP(CGfxOutBarCtrl)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_SETCURSOR()
ON_WM_SIZE()
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_GFX_LARGEICON, OnGfxLargeicon)
ON_UPDATE_COMMAND_UI(ID_GFX_LARGEICON, OnUpdateGfxLargeicon)
ON_COMMAND(ID_GFX_SMALLICON, OnGfxSmallicon)
ON_UPDATE_COMMAND_UI(ID_GFX_SMALLICON, OnUpdateGfxSmallicon)
ON_COMMAND(ID_GFX_REMOVEITEM, OnGfxRemoveitem)
ON_UPDATE_COMMAND_UI(ID_GFX_REMOVEITEM, OnUpdateGfxRemoveitem)
ON_COMMAND(ID_GFX_RENAMEITEM, OnGfxRenameitem)
ON_UPDATE_COMMAND_UI(ID_GFX_RENAMEITEM, OnUpdateGfxRenameitem)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_OUTBAR_NOTIFY, OnEndLabelEdit)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGfxOutBarCtrl message handlers
long CGfxOutBarCtrl::OnEndLabelEdit(WPARAM wParam, LPARAM lParam)
{
if (wParam == NM_OB_ONGROUPENDEDIT)
{
CGfxGroupEdit * pEdit = (CGfxGroupEdit *) lParam;
OUTBAR_INFO ob;
ob.index = pEdit->iIndex;
ob.cText = pEdit->text;
if (GetOwner()->SendMessage(WM_OUTBAR_NOTIFY, NM_OB_ONGROUPENDEDIT, (LPARAM) &ob))
{
SetFolderText(pEdit->iIndex, pEdit->text);
CRect rc;
GetFolderRect(pEdit->iIndex, rc);
InvalidateRect(rc, false);
}
}
if (wParam == NM_OB_ONLABELENDEDIT)
{
CGfxGroupEdit * pEdit = (CGfxGroupEdit *) lParam;
OUTBAR_INFO ob;
ob.index = pEdit->iIndex;
ob.cText = pEdit->text;
if (GetOwner()->SendMessage(WM_OUTBAR_NOTIFY, NM_OB_ONLABELENDEDIT, (LPARAM) &ob))
{
SetItemText(pEdit->iIndex, pEdit->text);
CRect rc;
GetInsideRect(rc);
InvalidateRect(rc, true);
}
}
return 0;
}
void CGfxOutBarCtrl::SetFolderText(const int index, const char * text)
{
ASSERT(index >= 0 && index < GetFolderCount());
CBarFolder * pbf = (CBarFolder *) arFolder.GetAt(index);
if (pbf->cName)
{
delete [] pbf->cName;
pbf->cName = NULL;
}
pbf->cName = new char [lstrlen(text)+1];
lstrcpy(pbf->cName, text);
}
void CGfxOutBarCtrl::SetItemText(const int index, const char * text)
{
ASSERT(iSelFolder >= 0 && iSelFolder < GetFolderCount());
CBarFolder * pbf = (CBarFolder *) arFolder.GetAt(iSelFolder);
CBarItem * pi = (CBarItem *) pbf->arItems.GetAt(index);
if (pi->cItem)
{
delete [] pi->cItem;
pi->cItem = NULL;
}
pi->cItem = new char [lstrlen(text)+1];
lstrcpy(pi->cItem, text);
}
BOOL CGfxOutBarCtrl::Create(DWORD dwStyle, const RECT & rect, CWnd * pParentWnd, UINT nID, const DWORD dwFlag)
{
dwFlags = dwFlag;
return CWnd::CreateEx(WS_EX_STATICEDGE, NULL, NULL, dwStyle|WS_CHILD, rect, pParentWnd, nID);
//GFXOUTBARCTRL_CLASSNAME
}
bool CGfxOutBarCtrl::IsSmallIconView() const
{
return dwFlags&fSmallIcon;
}
void CGfxOutBarCtrl::SetSmallIconView(const bool bSet)
{
iFirstItem = 0;
if (bSet)
{
if (!IsSmallIconView())
{
dwFlags |= fSmallIcon;
CRect rc;
GetInsideRect(rc);
InvalidateRect(rc, false);
}
}
else
{
if (IsSmallIconView())
{
dwFlags &= ~fSmallIcon;
CRect rc;
GetInsideRect(rc);
InvalidateRect(rc, false);
}
}
}
DWORD CGfxOutBarCtrl::GetFlag() const
{
return dwFlags;
}
void CGfxOutBarCtrl::ModifyFlag(const DWORD & dwRemove, const DWORD & dwAdd, const UINT redraw)
{
if (dwRemove) dwFlags &= ~(dwRemove);
if (dwAdd) dwFlags |= dwAdd;
if (GetSafeHwnd())
{
if (redraw != 0) SetWindowPos(0,0,0,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOMOVE|redraw);
else Invalidate();
}
}
int CGfxOutBarCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void CGfxOutBarCtrl::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1)
{
CPoint pt(GetMessagePos());
ScreenToClient(&pt);
CRect rc;
GetClientRect(&rc);
if (!(rc.PtInRect(pt)))
{
HighlightFolder(-1);
HighlightItem(-1);
KillTimer(1);
}
}
else if (nIDEvent == 3 && iLastSel >= 0)
{
iSelAnimCount ++;
if (iSelAnimCount > 10) iSelAnimCount = -1;
if (iSelAnimCount == 0)
DrawAnimItem(-1, 1, iLastSel);
if (iSelAnimCount == 1)
DrawAnimItem(0, 0, iLastSel);
if (iSelAnimCount == 2)
DrawAnimItem(1, 1, iLastSel);
if (iSelAnimCount == 3)
DrawAnimItem(0, 0, iLastSel);
}
CWnd::OnTimer(nIDEvent);
}
void CGfxOutBarCtrl::DrawAnimItem(const int xoffset, const int yoffset, const int index)
{
CImageList * ima = GetFolderImageList(iSelFolder, IsSmallIconView());
CRect rc, irc;
GetInsideRect(irc);
GetItemRect(iSelFolder, iLastSel, rc);
if (iLastSel >= iFirstItem && irc.bottom > rc.bottom && irc.top < rc.top)
{
ASSERT(iSelFolder >= 0 && iSelFolder < GetFolderCount());
CBarFolder * pbf = (CBarFolder *) arFolder.GetAt(iSelFolder);
ASSERT(index >= 0 && index < pbf->GetItemCount());
CBarItem * pi = (CBarItem *) pbf->arItems.GetAt(index);
ASSERT(pi && ima);
CClientDC dc(this);
if (IsSmallIconView())
{
if (ima)
{
IMAGEINFO ii;
ima->GetImageInfo(pi->iImageIndex, &ii);
CSize szImage = CRect(ii.rcImage).Size();
CPoint pt;
pt.x = rc.left + 2;
pt.y = rc.top + (rc.Height() - szImage.cy) / 2;
CRect rcBck(pt.x-1, pt.y-1, pt.x + szImage.cx+2, pt.y + szImage.cy+2);
没有合适的资源?快使用搜索试试~ 我知道了~
visual c++ 仿千千静听和QQ,漂亮的界面,卷帘菜单,用了皮肤SKINMAGIC,还有导航栏.zip
共35个文件
h:10个
cpp:8个
bmp:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1星 1 下载量 54 浏览量
2021-01-30
12:42:20
上传
评论
收藏 355KB ZIP 举报
温馨提示
vc仿千千静听和QQ,漂亮的界面,卷帘菜单,用了皮肤SKINMAGIC,还有导航栏.zip
资源推荐
资源详情
资源评论
收起资源包目录
visual c++ 仿千千静听和QQ,漂亮的界面,卷帘菜单,用了皮肤SKINMAGIC,还有导航栏.zip (35个子文件)
MenuDlg.cpp 8KB
Resource.h 1KB
StarWarsCtrl.cpp 12KB
res
imageList.bmp 4KB
lagicon.bmp 246B
handcur.cur 326B
Menu.ico 1KB
toolbar1.bmp 1KB
SmallIcon.bmp 3KB
Menu.rc2 396B
ICO-160.ICO 766B
Devior.smf 31KB
nodraggi.cur 326B
dragging.cur 326B
Menu.clw 2KB
showdlg.h 1KB
Menu.dsw 533B
Menu.dsp 5KB
MenuDlg.h 2KB
SkinMagicLib.h 12KB
DETOURS.lib 72KB
GfxPopupMenu.h 2KB
StarWarsCtrl.h 2KB
GfxOutBarCtrl.h 7KB
showdlg.cpp 1KB
Menu.h 1KB
GfxOutBarCtrl.cpp 54KB
StdAfx.cpp 206B
Menu.cpp 2KB
GfxGroupEdit.cpp 3KB
StdAfx.h 1KB
GfxGroupEdit.h 2KB
SkinMagicLib.lib 998KB
GfxPopupMenu.cpp 15KB
Menu.rc 7KB
共 35 条
- 1
资源评论
- wx2806504392022-07-01还少lib文件,根本无法使用!
lj_70596
- 粉丝: 98
- 资源: 3924
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功