Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

136 lines
3.4 KiB
C++

// PatToolBar.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "PatToolBar.h"
#include "tuanmanage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPatToolBar
CPatToolBar::CPatToolBar()
{
}
CPatToolBar::~CPatToolBar()
{
}
BEGIN_MESSAGE_MAP(CPatToolBar, CToolBarCtrl)
//{{AFX_MSG_MAP(CPatToolBar)
//}}AFX_MSG_MAP
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
END_MESSAGE_MAP()
BOOL CPatToolBar::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
if (GetRoutingFrame() != NULL) return FALSE;
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
CString strTipText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
return FALSE;
}
if (nID != 0) // will be zero on a separator
{
CTemporaryResourceOverride vTmp;
strTipText.LoadString(nID);
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
*pResult = 0;
}
#endif
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE;
}
return TRUE;
}
void CPatToolBar::SetStyle(int ButtonID, BYTE style)
{
BOOL bErr;
if(style == TBSTYLE_DROPDOWN)
SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
TBBUTTONINFO butInfo;
butInfo.cbSize = sizeof(TBBUTTONINFO);
butInfo.dwMask = TBIF_STYLE;
bErr = GetButtonInfo(ButtonID, &butInfo);
butInfo.fsStyle|= style;
bErr = SetButtonInfo(ButtonID, &butInfo);
}
void CPatToolBar::InitToolBar(UINT ButtonID[],int len,int ResID, CWnd* pParent)
{
CTemporaryResourceOverride vTmp;
Create( WS_VISIBLE | WS_CHILD | CCS_TOP | TBSTYLE_TOOLTIPS
| CCS_ADJUSTABLE ,CRect(0,0,0,0), pParent, ResID);
TBBUTTON *pIndex, *pRTF_Button = new TBBUTTON[len];
pIndex = pRTF_Button;
int numSep = 0;
for(long lIndex = 0; lIndex < len; lIndex++)
{
memset(pIndex, NULL, sizeof(TBBUTTON));
pIndex->idCommand = ButtonID[lIndex];
if(ButtonID[lIndex] == 0)
{
pIndex->fsStyle = TBSTYLE_SEP; //分隔符
pIndex->iBitmap = 0;
numSep++;
}
else
{
pIndex->fsStyle = TBSTYLE_BUTTON;
pIndex->iBitmap = lIndex - numSep; //减去分隔符数目
}
pIndex->fsState = TBSTATE_ENABLED;
pIndex++;
}
CSize size(16, 16);
SetButtonSize(size);
AddButtons(len, pRTF_Button);
delete[] pRTF_Button;
SetBitmapSize(size);
ModifyStyle(0, TBSTYLE_FLAT);
AddBitmap(len - numSep, ResID);
}
/////////////////////////////////////////////////////////////////////////////
// CPatToolBar message handlers