Files
Client/Server/NFAuthTool/NFAuthServer/NaveServer/UICmdEdit.cpp
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

97 lines
2.7 KiB
C++

#include "Global.h"
#include "UICmdEdit.h"
#include "UICmdMsgView.h"
namespace NaveServer {
HWND UICmdEdit::s_hEditWnd = NULL; // 에디트,
CHAR UICmdEdit::s_EditStr[MAX_EDITSTRING];
WNDPROC UICmdEdit::s_OldEditProc;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
LRESULT UICmdEdit::OnEditDefault( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
return CallWindowProc( s_OldEditProc, hWnd, uMsg, wParam, lParam );
}
LRESULT UICmdEdit::OnEditKeyDown( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( wParam )
{
case VK_TAB:
// ListView에 포커스 넘김
SetFocus(UICmdMsgView::s_hListWnd);
return FALSE;
}
return OnEditDefault(hWnd, uMsg, wParam, lParam);
}
LRESULT UICmdEdit::OnEditChar( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( wParam )
{
case 13: // EditBox에서 return을 했을때
SendMessage( hWnd, WM_GETTEXT, MAX_EDITSTRING, (LPARAM)(LPSTR )s_EditStr);
if(strlen(s_EditStr) == 0)
break;
// 입력한것에 대한 처리 셀을 선택
SendMessage( hWnd, EM_SETSEL, 0, (LPARAM )-1 );
// 부모에게 Return을 통지
SendMessage( GetParent(hWnd), WM_EDIT_RETURN, strlen(s_EditStr), (LPARAM)(LPSTR )s_EditStr );
return FALSE;
}
return OnEditDefault(hWnd, uMsg, wParam, lParam);
}
LRESULT CALLBACK UICmdEdit::EditProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( uMsg )
{
case WM_KEYDOWN:
return OnEditKeyDown( hWnd, uMsg, wParam, lParam );
case WM_CHAR :
return OnEditChar( hWnd, uMsg, wParam, lParam );
default :
return OnEditDefault( hWnd, uMsg, wParam, lParam );
}
}
HWND UICmdEdit::InitEditProc( HWND hParent, HFONT hFont )
{
// 메인 윈도우로.. 처리
ZeroMemory(s_EditStr, sizeof(s_EditStr));
RECT rect;
GetClientRect( hParent, &rect );
s_hEditWnd = CreateWindowW( L"EDIT", L"",
WS_CHILD | WS_CLIPSIBLINGS | WS_TABSTOP | WS_VISIBLE | WS_BORDER | ES_WANTRETURN | ES_AUTOHSCROLL,
0, rect.bottom-EDIT_HEIGHT, rect.right, EDIT_HEIGHT,
hParent, (HMENU )ID_EDIT,
(HINSTANCE )GetWindowLong( hParent, GWL_HINSTANCE ), NULL );
ShowWindow( s_hEditWnd, SW_SHOW );
UpdateWindow( s_hEditWnd );
// 메인 폰트로 폰트를 셋팅한다.
::SendMessage(s_hEditWnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(FALSE,0));
// 여기서 에디트 박스에 폰트를 셋팅하게 한다.
s_OldEditProc = (WNDPROC )GetWindowLong( s_hEditWnd, GWL_WNDPROC );
SetWindowLong( s_hEditWnd, GWL_WNDPROC, (LONG )EditProc );
return s_hEditWnd;
}
VOID UICmdEdit::ResizeEdit( HWND hParent )
{
RECT r;
GetClientRect( hParent, &r );
MoveWindow( s_hEditWnd, 0, r.bottom-EDIT_HEIGHT, r.right, EDIT_HEIGHT, TRUE );
}
}