Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
127 lines
2.5 KiB
C++
127 lines
2.5 KiB
C++
// InPlaceList.cpp : implementation file
|
|
//
|
|
|
|
#include "InPlaceList.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CInPlaceList
|
|
|
|
CInPlaceList::CInPlaceList(int iItem, int iSubItem, CStringList *plstItems, int nSel)
|
|
{
|
|
m_iItem = iItem;
|
|
m_iSubItem = iSubItem;
|
|
|
|
m_lstItems.AddTail( plstItems );
|
|
m_nSel = nSel;
|
|
m_bESC = FALSE;
|
|
}
|
|
|
|
CInPlaceList::~CInPlaceList()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CInPlaceList, CComboBox)
|
|
//{{AFX_MSG_MAP(CInPlaceList)
|
|
ON_WM_CREATE()
|
|
ON_WM_KILLFOCUS()
|
|
ON_WM_CHAR()
|
|
ON_WM_NCDESTROY()
|
|
ON_CONTROL_REFLECT(CBN_CLOSEUP, OnCloseup)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CInPlaceList message handlers
|
|
|
|
int CInPlaceList::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CComboBox::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
// Set the proper font
|
|
CFont* font = GetParent()->GetFont();
|
|
SetFont(font);
|
|
|
|
for( POSITION pos = m_lstItems.GetHeadPosition(); pos != NULL; )
|
|
{
|
|
AddString( (LPCTSTR) (m_lstItems.GetNext( pos )) );
|
|
}
|
|
SetCurSel( m_nSel );
|
|
SetFocus();
|
|
|
|
return 0;
|
|
}
|
|
|
|
BOOL CInPlaceList::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
if( pMsg->message == WM_KEYDOWN )
|
|
{
|
|
if(pMsg->wParam == VK_RETURN
|
|
|| pMsg->wParam == VK_ESCAPE
|
|
)
|
|
{
|
|
::TranslateMessage(pMsg);
|
|
::DispatchMessage(pMsg);
|
|
return TRUE; // DO NOT process further
|
|
}
|
|
}
|
|
|
|
return CComboBox::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
void CInPlaceList::OnKillFocus(CWnd* pNewWnd)
|
|
{
|
|
CComboBox::OnKillFocus(pNewWnd);
|
|
|
|
CString str;
|
|
GetWindowText(str);
|
|
|
|
// Send Notification to parent of ListView ctrl
|
|
LV_DISPINFO dispinfo;
|
|
dispinfo.hdr.hwndFrom = GetParent()->m_hWnd;
|
|
dispinfo.hdr.idFrom = GetDlgCtrlID();
|
|
dispinfo.hdr.code = LVN_ENDLABELEDIT;
|
|
|
|
dispinfo.item.mask = LVIF_TEXT;
|
|
dispinfo.item.iItem = m_iItem;
|
|
dispinfo.item.iSubItem = m_iSubItem;
|
|
dispinfo.item.pszText = m_bESC ? NULL : LPTSTR((LPCTSTR)str);
|
|
dispinfo.item.cchTextMax = str.GetLength();
|
|
|
|
GetParent()->GetParent()->SendMessage( WM_NOTIFY, GetParent()->GetDlgCtrlID(), (LPARAM)&dispinfo );
|
|
|
|
PostMessage( WM_CLOSE );
|
|
}
|
|
|
|
void CInPlaceList::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
|
|
{
|
|
if( nChar == VK_ESCAPE || nChar == VK_RETURN)
|
|
{
|
|
if( nChar == VK_ESCAPE )
|
|
m_bESC = TRUE;
|
|
GetParent()->SetFocus();
|
|
return;
|
|
}
|
|
|
|
CComboBox::OnChar(nChar, nRepCnt, nFlags);
|
|
}
|
|
|
|
void CInPlaceList::OnNcDestroy()
|
|
{
|
|
CComboBox::OnNcDestroy();
|
|
|
|
delete this;
|
|
}
|
|
|
|
void CInPlaceList::OnCloseup()
|
|
{
|
|
GetParent()->SetFocus();
|
|
}
|