Restructure repository to include all source folders
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>
This commit is contained in:
127
Server/ToolProject/AuthDBManager/ListViewControl/InPlaceEdit.cpp
Normal file
127
Server/ToolProject/AuthDBManager/ListViewControl/InPlaceEdit.cpp
Normal file
@@ -0,0 +1,127 @@
|
||||
#include "InPlaceEdit.h"
|
||||
|
||||
CInPlaceEdit::CInPlaceEdit(int iItem, int iSubItem, CString sInitText) :m_sInitText( sInitText )
|
||||
{
|
||||
m_iItem = iItem;
|
||||
m_iSubItem = iSubItem;
|
||||
m_bESC = FALSE;
|
||||
}
|
||||
|
||||
CInPlaceEdit::~CInPlaceEdit()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CInPlaceEdit, CEdit)
|
||||
//{{AFX_MSG_MAP(CInPlaceEdit)
|
||||
ON_WM_KILLFOCUS()
|
||||
ON_WM_NCDESTROY()
|
||||
ON_WM_CHAR()
|
||||
ON_WM_CREATE()
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
BOOL CInPlaceEdit::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if(pMsg->message == WM_KEYDOWN)
|
||||
{
|
||||
if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_DELETE || pMsg->wParam == VK_ESCAPE || GetKeyState(VK_CONTROL))
|
||||
{
|
||||
::TranslateMessage(pMsg);
|
||||
::DispatchMessage(pMsg);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return CEdit::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
|
||||
void CInPlaceEdit::OnKillFocus(CWnd* pNewWnd)
|
||||
{
|
||||
CEdit::OnKillFocus(pNewWnd);
|
||||
|
||||
CString str;
|
||||
GetWindowText(str);
|
||||
|
||||
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);
|
||||
|
||||
DestroyWindow();
|
||||
}
|
||||
|
||||
void CInPlaceEdit::OnNcDestroy()
|
||||
{
|
||||
CEdit::OnNcDestroy();
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
|
||||
void CInPlaceEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
|
||||
{
|
||||
if(nChar == VK_ESCAPE || nChar == VK_RETURN)
|
||||
{
|
||||
if(nChar == VK_ESCAPE)
|
||||
m_bESC = TRUE;
|
||||
|
||||
GetParent()->SetFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
CEdit::OnChar(nChar, nRepCnt, nFlags);
|
||||
|
||||
CString str;
|
||||
|
||||
GetWindowText(str);
|
||||
CWindowDC dc(this);
|
||||
CFont *pFont = GetParent()->GetFont();
|
||||
CFont *pFontDC = dc.SelectObject(pFont);
|
||||
CSize size = dc.GetTextExtent(str);
|
||||
dc.SelectObject(pFontDC);
|
||||
size.cx += 5;
|
||||
|
||||
CRect rect, parentrect;
|
||||
GetClientRect(&rect);
|
||||
GetParent()->GetClientRect(&parentrect);
|
||||
|
||||
ClientToScreen(&rect);
|
||||
GetParent()->ScreenToClient(&rect);
|
||||
|
||||
if(size.cx > rect.Width())
|
||||
{
|
||||
if(size.cx + rect.left < parentrect.right)
|
||||
rect.right = rect.left + size.cx;
|
||||
else
|
||||
rect.right = parentrect.right;
|
||||
|
||||
MoveWindow(&rect);
|
||||
}
|
||||
}
|
||||
|
||||
int CInPlaceEdit::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
if(CEdit::OnCreate(lpCreateStruct) == -1)
|
||||
return -1;
|
||||
|
||||
CFont* font = GetParent()->GetFont();
|
||||
SetFont(font);
|
||||
|
||||
SetWindowText(m_sInitText);
|
||||
SetFocus();
|
||||
SetSel(0, -1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user