// XTOutBarCtrl.cpp : implementation of the CXTOutBarCtrl class.
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// �1998-2005 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "XTPResourceManager.h"
#include "XTPColorManager.h"
#include "XTPDrawHelpers.h"
#include "XTResource.h"
#include "XTDefines.h"
#include "XTUtil.h"
#include "XTGlobal.h"
#include "XTVC50Helpers.h"
#include "XTWndHook.h"
#include "XTFlatComboBox.h"
#include "XTOutBarCtrl.h"
#include "XTMemDC.h"
#include "XTOutBarTheme.h"
#include "XTFunctions.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CXTOutBarEditItem
CXTOutBarEditItem::CXTOutBarEditItem()
{
m_iIndex = -1;
m_pParentWnd = NULL;
m_bSmallIcons = false;
m_bEscapeKey = false;
m_bIsFolder = false;
}
CXTOutBarEditItem::~CXTOutBarEditItem()
{
}
IMPLEMENT_DYNAMIC(CXTOutBarEditItem, CXTEdit)
BEGIN_MESSAGE_MAP(CXTOutBarEditItem, CXTEdit)
//{{AFX_MSG_MAP(CXTOutBarEditItem)
ON_WM_KILLFOCUS()
ON_WM_CHAR()
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CXTOutBarEditItem::OnKillFocus(CWnd* /*pNewWnd*/)
{
PostMessage( WM_CLOSE );
if ( !m_bEscapeKey )
{
GetWindowText( m_strText );
if ( !m_strText.IsEmpty( ) )
{
m_pParentWnd->EndLabelEdit( this, m_bIsFolder );
}
}
}
BOOL CXTOutBarEditItem::PreTranslateMessage(MSG* pMsg)
{
switch ( pMsg->wParam )
{
case VK_ESCAPE:
{
m_bEscapeKey = TRUE; // fall thru
}
case VK_RETURN:
{
PostMessage( WM_CLOSE );
return TRUE;
}
}
return CXTEdit::PreTranslateMessage(pMsg);
}
void CXTOutBarEditItem::PostNcDestroy()
{
delete this;
}
BOOL CXTOutBarEditItem::Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, UINT nIndex, bool bIsFolder, bool bSmallIcons)
{
ASSERT_VALID( pParentWnd ); // must be valid.
m_pParentWnd = ( CXTOutBarCtrl* )pParentWnd;
ASSERT_KINDOF( CXTOutBarCtrl, m_pParentWnd ); // must be an outlook bar control.
// get the inside size of the outlook bar.
CRect rcInside;
m_pParentWnd->GetInsideRect( rcInside );
rcInside.DeflateRect(5,5);
// adjust the size if necessary.
m_rcOriginal = rect;
m_bSmallIcons = bSmallIcons;
m_bIsFolder = bIsFolder;
m_iIndex = nIndex;
m_strText = lpszText;
if ( m_rcOriginal.Width( ) > rcInside.Width( ) )
{
if ( m_bSmallIcons != TRUE )
{
m_rcOriginal.left = rcInside.left;
}
m_rcOriginal.right = rcInside.right;
}
if (!CXTEdit::Create(dwStyle, m_rcOriginal, pParentWnd, nID))
return FALSE;
if (!CXTEdit::Initialize(m_pParentWnd))
return FALSE;
SetFont( m_pParentWnd->GetFontX( ) );
SetWindowText( m_strText );
return TRUE;
}
void CXTOutBarEditItem::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// if this is a folder, do default processing.
if ( m_bIsFolder )
{
CXTEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}
// if the escape or return key has been pressed, abort edit.
else if ( nChar == VK_ESCAPE || nChar == VK_RETURN )
{
if ( nChar == VK_ESCAPE )
{
m_bEscapeKey = TRUE;
}
m_pParentWnd->SetFocus( );
return;
}
CXTEdit::OnChar(nChar, nRepCnt, nFlags);
// get the inside size of the outlook bar.
CRect rcInside;
m_pParentWnd->GetInsideRect( rcInside );
rcInside.DeflateRect(5,5);
// get the edit box text
CString strText;
GetWindowText( strText );
// get the font used by the outlook bar.
CFont* pFont = m_pParentWnd->GetFontX( );
ASSERT( pFont && pFont->GetSafeHandle( ) );
// select the font used by the outlook bar.
CWindowDC dc( NULL );
// get the size of the text string.
CFont* f = dc.SelectObject( pFont );
CSize sz = dc.GetTextExtent( strText );
dc.SelectObject( f );
// construct the edit box size.
CRect rcItem = m_rcOriginal;
// calculate the width of the edit box.
if ( m_bSmallIcons == TRUE )
{
rcItem.right = rcItem.left + sz.cx + 9;
if ( rcItem.right < m_rcOriginal.right )
{
rcItem.right = m_rcOriginal.right;
}
else if ( rcItem.right > rcInside.right )
{
rcItem.right = rcInside.right;
}
}
else
{
int x = ( rcInside.Width( )-sz.cx )/2;
rcItem.left = rcInside.left + x;
rcItem.right = rcItem.left + sz.cx;
rcItem.InflateRect( 6,0 );
if ( rcItem.Width( ) < m_rcOriginal.Width( ) )
{
rcItem = m_rcOriginal;
}
else if ( rcItem.Width( ) > rcInside.Width( ) )
{
rcItem.left = rcInside.left;
rcItem.right = rcInside.right;
}
}
// resize the edit box.
MoveWindow( &rcItem );
}
BOOL CXTOutBarEditItem::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
HCURSOR hCursor = ::LoadCursor( NULL, IDC_IBEAM );
if ( hCursor != NULL )
{
::SetCursor( hCursor );
return TRUE;
}
return CXTEdit::OnSetCursor(pWnd, nHitTest, message);
}
/////////////////////////////////////////////////////////////////////////////
// CXTOutBarCtrl
IMPLEMENT_THEME_HOST(CXTOutBarCtrl, CXTOutBarTheme)
CXTOutBarCtrl::CXTOutBarCtrl()
: CXTThemeManagerStyleHost(GetThemeFactoryClass())
, m_penBlack(PS_SOLID, 1, RGB(0,0,0))
{
m_rcUpArrow.SetRectEmpty();
m_rcDownArrow.SetRectEmpty();
m_dwFlags = OBS_XT_DEFAULT;
m_pLargeImageList = NULL;
m_pSmallImageList = NULL;
m_sizeOffset.cx = 4;
m_sizeOffset.cy = 3;
m_sizeMargin.cx = 5;
m_sizeMargin.cy = 5;
m_nFolderHeight = 22;
m_nSelFolder = 0;
m_nLastFolderSelected = -1;
m_nFolderHilighted = -1;
m_nLastItemSelected = -1;
m_nItemHilighted = -1;
m_nLastDragItemDraw = -1;
m_nLastDragItemDrawType = -1;
m_nFirstItem = 0;
m_nIconSpacingSmall = 10;
m_nIconSpacingLarge = 8;
m_nAnimationTickCount = 10;
m_nSelAnimCount = 0;
m_nSelAnimTiming = 0;
m_nHitInternal1 = 0;
m_nHitInternal2 = 0;
m_bUpArrow = FALSE;
m_bDownArrow = FALSE;
m_bUpPressed = FALSE;
m_bDownPressed = FALSE;
m_bLooping = FALSE;
m_bPressedHighlight = FALSE;
m_bIconPressed = FALSE;
SetFontX(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));
}
CXTOutBarCtrl::~CXTOutBarCtrl()
{
int iFolder;
for (iFolder = 0; iFolder < m_arFolder.GetSize(); iFolder++)
{
m_nSelFolder = iFolder;
CXTOutBarFolder* pBarFolder = (CXTOutBarFolder*)m_arFolder.GetAt(iFolder);
SAFE_DELETE( pBarFolder );
}
m_arFolder.RemoveAll();
m_penBlack.DeleteObject();
m_font.DeleteObject();
}
IMPLEMENT_DYNCREATE(CXTOutBarCtrl, CWnd)
BEGIN_MESSAGE_MAP(CXTOutBarCtrl, CWnd)
//{{AFX_MSG_MAP(CXTOutBarCtrl)
ON_WM_TIMER()
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_MOUSEMOVE()
ON_MESSAGE_VOID(WM_MOUSELEAVE, OnMouseLeave)
ON_WM_LBUTTONDOWN()
ON_WM_SETCURSOR()
ON_WM_SIZE()
ON_COMMAND(XT_IDC_LARGEICON, OnLargeIcon)
ON_UPDATE_COMMAND_UI(XT_IDC_LARGEICON, OnUpdateLargeIcon)
ON_COMMAND(XT_IDC_SMALLICON, OnSmallIcon)
ON_UPDATE_COMMAND_UI(XT_IDC_SMALLICON, OnUpdateSmallIcon)
ON_COMMAND(XT_IDC_REMOVEITEM, OnRemoveItem)
ON_UPDATE_COMMAND_UI(
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
VC++ 界面库 Codejock Xtreme Toolkit Pro v9.60 (4323个子文件)
heartbeat.avi 3KB
heartbeat.avi 3KB
XTPAppWizard.awx 1.33MB
makehelp.bat 2KB
makehelp.bat 2KB
MakeHelp.bat 1KB
MakeHTMLHelp.bat 1KB
MakeHTMLHelp.bat 1KB
startpage.bmp 360KB
startpage.bmp 360KB
alphaclr.bmp 46KB
alphaclr.bmp 46KB
cj_logo.bmp 42KB
cj_logo.bmp 42KB
HOT_LARGE_ALPHA.bmp 36KB
NORMAL_LARGE_ALPHA.bmp 36KB
highclr.bmp 35KB
HOT_LARGE.bmp 27KB
NORMAL_LARGE.bmp 27KB
standard_alpha.bmp 22KB
Toolbar_a.bmp 20KB
toolbar_large.bmp 19KB
Shortcuts_big_alpha.bmp 18KB
TaskIcons_alpha.bmp 16KB
ImageEditorIcons32.bmp 16KB
NORMAL_SMALL_ALPHA.bmp 16KB
HOT_SMALL_ALPHA.bmp 16KB
ToolbarLarge.bmp 15KB
Swatch.bmp 14KB
DockingStickersOlive.bmp 14KB
DockingStickersSilver.bmp 14KB
DockingStickersBlue.bmp 14KB
MenuBar_a.bmp 13KB
Web_a.bmp 13KB
NORMAL_SMALL.bmp 12KB
HOT_SMALL.bmp 12KB
FileIcons_Alpha.bmp 12KB
format_alpha.bmp 11KB
extended_alpha.bmp 11KB
Trash.bmp 9KB
imagelist.bmp 8KB
Toolbar.bmp 8KB
explorer_bar.bmp 8KB
explorer_bar.bmp 8KB
tabctrl.bmp 8KB
tabctrllight.bmp 8KB
normal.bmp 8KB
Toolbar.bmp 8KB
alphaclrsm.bmp 8KB
alphaclrsm.bmp 8KB
Shortcuts_small_alpha.bmp 8KB
img_restree.bmp 8KB
bmreport.bmp 8KB
img_restree.bmp 8KB
HlpSBar.bmp 7KB
Toolbar.bmp 7KB
ToolbarDisabled_Green.bmp 6KB
ToolbarDisabled.bmp 6KB
ToolbarDisabled_Red.bmp 6KB
img_classtree.bmp 6KB
img_classtree.bmp 6KB
highclrsm.bmp 6KB
IconsBarHot.bmp 6KB
IconsBarNormal.bmp 6KB
ToolbarNormal.bmp 6KB
ToolbarNormal_Red.bmp 6KB
ToolbarNormal_Green.bmp 6KB
ToolbarHot_Green.bmp 6KB
ToolbarHot_Red.bmp 6KB
ToolbarHot.bmp 6KB
ToolsBar.bmp 6KB
300.bmp 6KB
Toolbox.bmp 5KB
Toolbox.bmp 5KB
UserIcons.bmp 5KB
Menu_icons.bmp 5KB
TabIcons.bmp 5KB
TaskIcons_256.bmp 5KB
img_filetree.bmp 5KB
img_filetree.bmp 5KB
logo.bmp 4KB
FileIcons_256.bmp 4KB
langbar.bmp 4KB
Arabic.bmp 3KB
German.bmp 3KB
Usa.bmp 3KB
Japan.bmp 3KB
Russian.bmp 3KB
toolbox.bmp 3KB
Toolbar.bmp 3KB
Extended.bmp 3KB
TaskIcons.bmp 3KB
SolutionExplorerPane.bmp 3KB
tabicons.bmp 3KB
Themesbar.bmp 3KB
standard_normal.bmp 3KB
TreeIcons.bmp 3KB
ExplorerBar.bmp 3KB
Icons.bmp 3KB
Toolbar.bmp 3KB
共 4323 条
- 1
- 2
- 3
- 4
- 5
- 6
- 44
资源评论
- 天马无敌小小2013-05-21建立文件后编译出现了错误!
- Zenghao_Gao2015-10-28比较新的版本 很完整
- shmyong2013-03-26用来帮助界面开发的包,只是不是太会用,如果能附加些参考文档就好了
- ruochen_20072012-10-31很好用,界面很新,比之前用的8.6要好很多。
- 深圳市百云谷互联网信息技术有限公司2012-10-23还是挺不错的,比较新,比较好用,比老的有很大改进。
asfasdfasdfasd
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功