www.pudn.com > mir112347628.rar > ChatEditBox.cpp


/******************************************************************************************************************

¸ðµâ¸í:

ÀÛ¼ºÀÚ:
ÀÛ¼ºÀÏ:

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤ ³»¿ë

*******************************************************************************************************************/



#include "StdAfx.h"


static CChatEdit* g_xChatEdit = NULL;


/******************************************************************************************************************

CChatEdit Functions

*******************************************************************************************************************/


/******************************************************************************************************************

ÇÔ¼ö¸í : CChatEdit::CChatEdit()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
Ãâ·Â :

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
CChatEdit::CChatEdit()
{
m_hChatEdit = NULL;
g_xChatEdit = this;
m_hFontChatEdit = NULL;
m_dwFontColor = RGB(255, 0, 255);
ZeroMemory(m_szInputMsg, MAX_PATH);
}



/******************************************************************************************************************

ÇÔ¼ö¸í : CChatEdit::~CChatEdit()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
Ãâ·Â :

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
CChatEdit::~CChatEdit()
{
DestroyDialog();
}



/******************************************************************************************************************

ÇÔ¼ö¸í : CChatEdit::DestroyDialog()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
Ãâ·Â : BOOL

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
BOOL CChatEdit::DestroyDialog()
{
if ( m_hFontChatEdit != NULL )
{
DeleteObject(m_hFontChatEdit);
m_hFontChatEdit = NULL;
}

DestroyWindow(m_hChatEdit);
return TRUE;
}



/******************************************************************************************************************

ÇÔ¼ö¸í : ChatEditDlgProc()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
ÀÔ·Â : HWND hWnd
UINT uMsg
WPARAM wParam
LPARAM lParam
Ãâ·Â : INT_PTR CALLBACK

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
INT_PTR CALLBACK ChatEditDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return g_xChatEdit->ChatEditProc(hWnd, uMsg, wParam, lParam);
}



/******************************************************************************************************************

ÇÔ¼ö¸í : CChatEdit::ChatEditProc()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
ÀÔ·Â : HWND hWnd
UINT nMsg
WPARAM wParam
LPARAM lParam
Ãâ·Â : LRESULT CALLBACK

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
LRESULT CALLBACK CChatEdit::ChatEditProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
switch (nMsg)
{
case WM_KEYDOWN:
{
switch ( (INT)wParam )
{
case VK_F1:
case VK_F2:
case VK_F3:
case VK_F4:
case VK_F5:
case VK_F6:
case VK_F7:
case VK_F8:
case VK_ESCAPE:
{
HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
SetFocus(m_hMainWindow);
SendMessage(m_hMainWindow, WM_KEYDOWN, (INT)wParam, lParam);
return 0L;
}
}
break;
}
case WM_CHAR:
{
switch ( (INT)wParam )
{
case VK_RETURN:
{
GetWindowText(hWnd, m_szInputMsg, MAX_PATH);
SetWindowText(hWnd, "");
HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
SetFocus(m_hMainWindow);
ShowWindow(m_hChatEdit, SW_HIDE);

if ( m_szInputMsg )
{
if ( m_szInputMsg[0] == '@' )
SendMessage(m_hMainWindow, _WM_USER_MSG_INPUTTED, TRUE, NULL);
else
{
SendMessage(m_hMainWindow, _WM_USER_MSG_INPUTTED, NULL, NULL);
}
}

return 0L;
}
case VK_TAB:
{
HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
SetFocus(m_hMainWindow);
SendMessage(m_hMainWindow, WM_KEYDOWN, (INT)wParam, lParam);
return 0L;
}
}
break;
}
case WM_PAINT:
{

BeginPaint(m_hChatEdit, &amt;ps);
InvalidateRect(hWnd, NULL, FALSE);
EndPaint(m_hChatEdit, &amt;ps);
break;
}
default:
break;
}
return CallWindowProc(m_WndProcChatEdit, hWnd, nMsg, wParam, lParam);
}



/******************************************************************************************************************

ÇÔ¼ö¸í : CChatEdit::Create()

ÀÛ¼ºÀÚ :
ÀÛ¼ºÀÏ :

¸ñÀû :
ÀÔ·Â : HINSTANCE hInstance
HWND hWndParent
INT nX
INT nY
INT nXsize
INT nYSize
Ãâ·Â : BOOL

[ÀÏÀÚ][¼öÁ¤ÀÚ] : ¼öÁ¤³»¿ë

*******************************************************************************************************************/
BOOL CChatEdit::Create(HINSTANCE hInstance, HWND hWndParent, INT nX, INT nY, INT nXsize, INT nYSize)
{
m_hChatEdit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), "", WS_POPUP | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
nX, nY, nXsize, nYSize,
hWndParent, NULL, hInstance, NULL);
m_WndProcChatEdit = (WNDPROC)SetWindowLong(m_hChatEdit, GWL_WNDPROC, (LONG)ChatEditDlgProc);

// ÀÌ¹Ì ÆùÆ®°¡ »ý¼ºµÇ¾î ÀÖÀ¸¸é »õ·Î ¸¸µé¼ö ÀÖµµ·Ï Clear
if ( m_hFontChatEdit != NULL )
{
DeleteObject(m_hFontChatEdit);
m_hFontChatEdit = NULL;
}

m_hFontChatEdit = CreateFont(12, 0, 0, 0, FW_NORMAL, 0, 0, 0, HANGUL_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, "±¼¸²Ã¼");

SendMessage(m_hChatEdit, WM_SETFONT, (WPARAM)m_hFontChatEdit, MAKELPARAM(TRUE, 0));
// ÀԷ¿¡µðÆ®À©µµ¿ìÀÇ ÃÖ´ëÀԷ¹®ÀÚ °¹¼ö Á¤ÀÇ.
SendMessage(m_hChatEdit, EM_LIMITTEXT, (WPARAM)95, 0);
ShowWindow(m_hChatEdit, SW_HIDE);
UpdateWindow(m_hChatEdit);
return TRUE;
}



BOOL CChatEdit::SetLimitText(INT nLimitText)
{
if ( m_hChatEdit )
{
SendMessage(m_hChatEdit, EM_LIMITTEXT, (WPARAM)nLimitText, 0);
return TRUE;
}
return FALSE;
}