166 lines
5.0 KiB
C++
166 lines
5.0 KiB
C++
// CPACLstB.cpp : implementation file
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#include "StdAfx.h"
|
|
|
|
#include "WControls\CTL_WCBx.hpp"
|
|
|
|
#include "Controls\CTL_CtlE.hpp"
|
|
#include "Others\CTL_Pub.hpp"
|
|
|
|
//External Modules
|
|
#include "CTL_ErO.hpp"
|
|
#include "IncTUT.h"
|
|
//End of External Modules
|
|
|
|
//ROMTEAM Selection (Cristian Stegaru 24/03/98)
|
|
#include "Others\CTL_EnLi.hpp"
|
|
#include "Data\CTL_DatE.hpp"
|
|
#include "Controls\CTL_CtlE.hpp"
|
|
//ENDROMTEAM Selection (Cristian Stegaru)
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTL_Editor_ComboBox
|
|
|
|
BEGIN_MESSAGE_MAP(CTL_Editor_ComboBox, CComboBox)
|
|
//{{AFX_MSG_MAP(CTL_Editor_ComboBox)
|
|
ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelchange)
|
|
ON_CONTROL_REFLECT(CBN_DROPDOWN, OnDropdown)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
//***************************************************************************
|
|
CTL_Editor_ComboBox::CTL_Editor_ComboBox(CTL_tdeComboBoxType _eType,
|
|
long _lAdditionnalStyles,
|
|
CTL_Editor_Control *_pclControl,
|
|
CWnd *_pclParentWnd,
|
|
long _lUserDefinedType /*= 0*/,
|
|
long _lUserDefinedCode /*= 0*/)
|
|
|
|
: CTL_BaseWindowsControl(_pclControl,
|
|
_pclParentWnd,
|
|
_lUserDefinedType,
|
|
_lUserDefinedCode)
|
|
{
|
|
m_pri_eType = _eType;
|
|
|
|
//Creates control
|
|
DWORD lStyles = WS_CHILD | CBS_DROPDOWNLIST | WS_VSCROLL;
|
|
lStyles |= _lAdditionnalStyles;
|
|
|
|
CRect crBidonRect(0,0,10,200);
|
|
if ( Create(lStyles,
|
|
crBidonRect,
|
|
_pclParentWnd,
|
|
CTL_fn_lGetNextAvailableIDForControl()) )
|
|
{
|
|
//Sets the font
|
|
SetFont(_pclParentWnd->GetFont());
|
|
}
|
|
|
|
m_pri_p_td_fn_vSelChanged_CallBack = NULL;
|
|
m_pri_p_td_fn_vDropDown_CallBack = NULL;
|
|
|
|
//ROMTEAM Selection (Cristian Stegaru 24/03/98)
|
|
m_iOldSelection = CB_ERR;
|
|
m_pfCanISelectThisItem = NULL;
|
|
//ENDROMTEAM Selection (Cristian Stegaru)
|
|
|
|
}
|
|
|
|
//***************************************************************************
|
|
CTL_Editor_ComboBox::~CTL_Editor_ComboBox()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTL_Editor_ComboBox message handlers
|
|
|
|
//***************************************************************************
|
|
void CTL_Editor_ComboBox::m_pub_fn_vSetSelChanged_CallBack(CTL_tdp_fn_vComboBoxSelChanged _p_fn_vCallBack)
|
|
{
|
|
ERROR_ASSERT( m_pri_p_td_fn_vSelChanged_CallBack == NULL );
|
|
|
|
m_pri_p_td_fn_vSelChanged_CallBack = _p_fn_vCallBack;
|
|
}
|
|
|
|
//****************************************************************************
|
|
void CTL_Editor_ComboBox::m_pub_fn_vSetDropDown_CallBack(CTL_tdp_fn_vComboBoxSelChanged _p_fn_vCallBack)
|
|
{
|
|
ERROR_ASSERT( m_pri_p_td_fn_vDropDown_CallBack == NULL );
|
|
|
|
m_pri_p_td_fn_vDropDown_CallBack = _p_fn_vCallBack;
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CTL_Editor_ComboBox::OnSelchange()
|
|
{
|
|
short wIndex = GetCurSel();
|
|
|
|
//ROMTEAM Selection (Cristian Stegaru 24/03/98)
|
|
if (m_pfCanISelectThisItem)
|
|
{
|
|
//get the data
|
|
CTL_Editor_EnumElement *pNewSelectedElement = (CTL_Editor_EnumElement *)GetItemDataPtr (wIndex);
|
|
ASSERT (pNewSelectedElement);
|
|
|
|
CTL_Editor_EnumControl *pEnumCtrl = (CTL_Editor_EnumControl *)m_pub_fn_pclGetParentControl ();
|
|
ASSERT (pEnumCtrl);
|
|
CTL_Editor_EnumData *pEnumData = (CTL_Editor_EnumData *)pEnumCtrl->m_fn_pclGetEditedData ();
|
|
ASSERT (pEnumData);
|
|
if (!(*m_pfCanISelectThisItem)(pEnumData, pNewSelectedElement))
|
|
{
|
|
SetCurSel (m_iOldSelection);
|
|
return;
|
|
}
|
|
}
|
|
//ENDROMTEAM Selection (Cristian Stegaru)
|
|
if ( wIndex != LB_ERR )
|
|
if ( m_pri_p_td_fn_vSelChanged_CallBack != NULL )
|
|
m_pri_p_td_fn_vSelChanged_CallBack(this,
|
|
m_pub_fn_pclGetParentControl(),
|
|
m_pri_eType,
|
|
m_pub_fn_lGetUserDefinedType(),
|
|
m_pub_fn_lGetUserDefinedCode());
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CTL_Editor_ComboBox::OnDropdown()
|
|
{
|
|
//ROMTEAM Selection (Cristian Stegaru 24/03/98)
|
|
m_iOldSelection = GetCurSel ();
|
|
//ENDROMTEAM Selection (Cristian Stegaru)
|
|
int iSize, iMaxSize = 0;
|
|
|
|
for (int iIndex = 0; iIndex < GetCount(); iIndex++)
|
|
{
|
|
iSize = GetLBTextLen(iIndex);
|
|
if (iSize > iMaxSize)
|
|
iMaxSize = iSize;
|
|
}
|
|
|
|
SetDroppedWidth(iMaxSize*7);
|
|
|
|
if ( m_pri_p_td_fn_vDropDown_CallBack != NULL )
|
|
m_pri_p_td_fn_vDropDown_CallBack(this,
|
|
m_pub_fn_pclGetParentControl(),
|
|
m_pri_eType,
|
|
m_pub_fn_lGetUserDefinedType(),
|
|
m_pub_fn_lGetUserDefinedCode());
|
|
}
|
|
|
|
//**********************************************************************************
|
|
//For TUT registration
|
|
void CTL_Editor_ComboBox::m_pub_fn_vRegisterWindowsControl(CString _csAdditionnalInfo)
|
|
{
|
|
#ifndef CTL_WITH_NO_TUT
|
|
m_pro_fn_vRegisterWindowsControl(_csAdditionnalInfo, TUT_e_ComboBox, "Combo Box", this);
|
|
#endif //CTL_WITH_NO_TUT
|
|
}
|