191 lines
5.1 KiB
C++
191 lines
5.1 KiB
C++
// XToolBarCtrl.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "XToolBarCtrl.h"
|
|
#include "resource.h"
|
|
#include "GJKWorkspace.h"
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// XToolBarCtrl
|
|
|
|
XToolBarCtrl::XToolBarCtrl()
|
|
{
|
|
m_bIsGJK = FALSE;
|
|
}
|
|
|
|
XToolBarCtrl::~XToolBarCtrl()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(XToolBarCtrl, CToolBarCtrl)
|
|
//{{AFX_MSG_MAP(XToolBarCtrl)
|
|
ON_WM_DESTROY()
|
|
ON_CBN_SELCHANGE(ID_COMBOBOX, OnSelchangeCombo)
|
|
//}}AFX_MSG_MAP
|
|
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
|
|
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// XToolBarCtrl message handlers
|
|
|
|
BOOL XToolBarCtrl::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; // shen rui add 对话框控件不显示
|
|
}
|
|
|
|
if (nID != 0) // will be zero on a separator
|
|
{
|
|
CTemporaryResourceOverride vTmp;
|
|
strTipText.LoadString(nID); //=szFullText;
|
|
|
|
#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 XToolBarCtrl::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 XToolBarCtrl::InitToolBar(int 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);
|
|
//add by cwk on 060926
|
|
if (m_bIsGJK && m_pGjk->GetOpenMode()!=1)
|
|
{
|
|
CRect rect;
|
|
this->GetItemRect(0,rect);
|
|
rect.right = rect.right + 46;
|
|
rect.bottom = rect.bottom + 156;
|
|
m_pComboxCtrl = new CComboBox();
|
|
m_pComboxCtrl->Create(CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL,
|
|
rect,this,ID_COMBOBOX);
|
|
m_pComboxCtrl->SetItemHeight(-1,20);
|
|
m_pComboxCtrl->SetFont(pParent->GetFont());
|
|
}
|
|
}
|
|
void XToolBarCtrl::OnDestroy()
|
|
{
|
|
CToolBarCtrl::OnDestroy();
|
|
|
|
// TODO: Add your message handler code here
|
|
if (m_bIsGJK && m_pGjk->GetOpenMode()!=1)
|
|
{
|
|
m_pComboxCtrl->DestroyWindow();
|
|
delete m_pComboxCtrl;
|
|
}
|
|
}
|
|
extern BOOL GetGjkwFileByMenu(const TCHAR* szMenuName, CString &csTkwFileName);
|
|
void XToolBarCtrl::OnSelchangeCombo()
|
|
{
|
|
if (m_bIsGJK)
|
|
{
|
|
CString str,sTKWFullName;
|
|
if (m_pComboxCtrl != NULL)
|
|
{
|
|
m_pComboxCtrl->GetLBText(m_pComboxCtrl->GetCurSel(),str);
|
|
GetGjkwFileByMenu(LPCTSTR(str), sTKWFullName);
|
|
if(!sTKWFullName.IsEmpty() && FindFile(sTKWFullName))
|
|
{
|
|
m_pGjk->m_csCurTKWFile = sTKWFullName;
|
|
m_pGjk->m_treeCtrl.SetDataSource(sTKWFullName);
|
|
m_pGjk->m_ImageBox.m_bIsJpgShow = m_pGjk->m_treeCtrl.m_bIsJpgShow;
|
|
m_pGjk->m_treeCtrl.SelectItem(m_pGjk->m_treeCtrl.GetRootItem());
|
|
m_pGjk->SetDlgItemText(IDC_S_DESCRIPTION, _T("打开gjk图库组文件"));
|
|
m_pGjk->SaveStatus();
|
|
m_pGjk->LoadStatus();
|
|
m_sCurSelect = str;
|
|
}
|
|
else if(!FindFile(sTKWFullName) && !sTKWFullName.IsEmpty())
|
|
{
|
|
MessageBox(_T("没有找到库文件!请确认安装是否完全。"));
|
|
m_pComboxCtrl->SetCurSel(m_pComboxCtrl->FindStringExact(-1,LPCTSTR(m_sCurSelect)));
|
|
}
|
|
}
|
|
}
|
|
} |