ChatEditBox.cpp
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:7k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. /******************************************************************************************************************
  2.                                                                                                                    
  3. 葛碘疙:
  4. 累己磊:
  5. 累己老:
  6. [老磊][荐沥磊] : 荐沥 郴侩
  7.                                                                                                                    
  8. *******************************************************************************************************************/
  9. #include "StdAfx.h"
  10. static CChatEdit* g_xChatEdit = NULL;
  11. /******************************************************************************************************************
  12. CChatEdit Functions
  13. *******************************************************************************************************************/
  14. /******************************************************************************************************************
  15. 窃荐疙 : CChatEdit::CChatEdit()
  16. 累己磊 : 
  17. 累己老 : 
  18. 格利   : 
  19. 免仿   : 
  20. [老磊][荐沥磊] : 荐沥郴侩
  21. *******************************************************************************************************************/
  22. CChatEdit::CChatEdit()
  23. {
  24. m_hChatEdit = NULL;
  25. g_xChatEdit = this;
  26. m_hFontChatEdit = NULL;
  27. m_dwFontColor = RGB(255, 0, 255);
  28. ZeroMemory(m_szInputMsg, MAX_PATH);
  29. }
  30. /******************************************************************************************************************
  31. 窃荐疙 : CChatEdit::~CChatEdit()
  32. 累己磊 : 
  33. 累己老 : 
  34. 格利   : 
  35. 免仿   : 
  36. [老磊][荐沥磊] : 荐沥郴侩
  37. *******************************************************************************************************************/
  38. CChatEdit::~CChatEdit()
  39. {
  40. DestroyDialog();
  41. }
  42. /******************************************************************************************************************
  43. 窃荐疙 : CChatEdit::DestroyDialog()
  44. 累己磊 : 
  45. 累己老 : 
  46. 格利   : 
  47. 免仿   : BOOL 
  48. [老磊][荐沥磊] : 荐沥郴侩
  49. *******************************************************************************************************************/
  50. BOOL CChatEdit::DestroyDialog()
  51. {
  52. if ( m_hFontChatEdit != NULL )
  53. {
  54. DeleteObject(m_hFontChatEdit);
  55. m_hFontChatEdit = NULL; 
  56. }
  57. DestroyWindow(m_hChatEdit);
  58. return TRUE;
  59. }
  60. /******************************************************************************************************************
  61. 窃荐疙 : ChatEditDlgProc()
  62. 累己磊 : 
  63. 累己老 : 
  64. 格利   : 
  65. 涝仿   : HWND hWnd
  66.          UINT uMsg
  67.          WPARAM wParam
  68.          LPARAM lParam
  69. 免仿   : INT_PTR CALLBACK 
  70. [老磊][荐沥磊] : 荐沥郴侩
  71. *******************************************************************************************************************/
  72. INT_PTR CALLBACK ChatEditDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  73. {
  74.     return g_xChatEdit->ChatEditProc(hWnd, uMsg, wParam, lParam);
  75. }
  76. /******************************************************************************************************************
  77. 窃荐疙 : CChatEdit::ChatEditProc()
  78. 累己磊 : 
  79. 累己老 : 
  80. 格利   : 
  81. 涝仿   : HWND hWnd
  82.          UINT nMsg
  83.          WPARAM wParam
  84.          LPARAM lParam
  85. 免仿   : LRESULT CALLBACK 
  86. [老磊][荐沥磊] : 荐沥郴侩
  87. *******************************************************************************************************************/
  88. LRESULT CALLBACK CChatEdit::ChatEditProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  89. {
  90. PAINTSTRUCT ps;
  91. switch (nMsg)
  92. {
  93. case WM_KEYDOWN:
  94. {
  95. switch ( (INT)wParam )
  96. {
  97. case VK_F1:
  98. case VK_F2:
  99. case VK_F3:
  100. case VK_F4:
  101. case VK_F5:
  102. case VK_F6:
  103. case VK_F7:
  104. case VK_F8:
  105. case VK_ESCAPE:
  106. {
  107. HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
  108. SetFocus(m_hMainWindow);
  109. SendMessage(m_hMainWindow, WM_KEYDOWN, (INT)wParam, lParam);
  110. return 0L;
  111. }
  112. }
  113. break;
  114. }
  115. case WM_CHAR:
  116. {
  117. switch ( (INT)wParam )
  118. {
  119. case VK_RETURN:
  120. {
  121. GetWindowText(hWnd, m_szInputMsg, MAX_PATH);
  122. SetWindowText(hWnd, "");
  123. HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
  124. SetFocus(m_hMainWindow);
  125. ShowWindow(m_hChatEdit, SW_HIDE);
  126. if ( m_szInputMsg )
  127. {
  128. if ( m_szInputMsg[0] == '@' )
  129. SendMessage(m_hMainWindow, _WM_USER_MSG_INPUTTED, TRUE, NULL);
  130. else
  131. {
  132. SendMessage(m_hMainWindow, _WM_USER_MSG_INPUTTED, NULL, NULL);
  133. }
  134. }
  135. return 0L;
  136. }
  137. case VK_TAB:
  138. {
  139. HWND m_hMainWindow = g_xMainWnd.GetSafehWnd();
  140. SetFocus(m_hMainWindow);
  141. SendMessage(m_hMainWindow, WM_KEYDOWN, (INT)wParam, lParam);
  142. return 0L;
  143. }
  144. }
  145. break;
  146. }
  147. case WM_PAINT:
  148. {
  149. BeginPaint(m_hChatEdit, &ps);
  150. InvalidateRect(hWnd, NULL, FALSE);
  151. EndPaint(m_hChatEdit, &ps);
  152. break;
  153. }
  154. default:
  155. break;
  156. }
  157. return CallWindowProc(m_WndProcChatEdit, hWnd, nMsg, wParam, lParam);
  158. }
  159. /******************************************************************************************************************
  160. 窃荐疙 : CChatEdit::Create()
  161. 累己磊 : 
  162. 累己老 : 
  163. 格利   : 
  164. 涝仿   : HINSTANCE hInstance
  165.          HWND hWndParent
  166.          INT nX
  167.          INT nY
  168.          INT nXsize
  169.          INT nYSize
  170. 免仿   : BOOL 
  171. [老磊][荐沥磊] : 荐沥郴侩
  172. *******************************************************************************************************************/
  173. BOOL CChatEdit::Create(HINSTANCE hInstance, HWND hWndParent, INT nX, INT nY, INT nXsize, INT nYSize)
  174. {
  175. m_hChatEdit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), "", WS_POPUP | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
  176.  nX, nY, nXsize, nYSize,
  177.  hWndParent, NULL, hInstance, NULL);   
  178. m_WndProcChatEdit = (WNDPROC)SetWindowLong(m_hChatEdit, GWL_WNDPROC, (LONG)ChatEditDlgProc);
  179. // 捞固 迄飘啊 积己登绢 乐栏搁 货肺 父甸荐 乐档废 Clear
  180. if ( m_hFontChatEdit != NULL )
  181. {
  182. DeleteObject(m_hFontChatEdit); 
  183. m_hFontChatEdit = NULL; 
  184. }
  185. m_hFontChatEdit = CreateFont(12, 0, 0, 0, FW_NORMAL, 0, 0, 0, HANGUL_CHARSET, 
  186.  OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
  187.  DEFAULT_QUALITY, DEFAULT_PITCH, "奔覆眉");
  188. SendMessage(m_hChatEdit, WM_SETFONT, (WPARAM)m_hFontChatEdit, MAKELPARAM(TRUE, 0));
  189. // 涝仿俊叼飘扩档快狼 弥措涝仿巩磊 肮荐 沥狼.
  190. SendMessage(m_hChatEdit, EM_LIMITTEXT, (WPARAM)95, 0);
  191. ShowWindow(m_hChatEdit, SW_HIDE);
  192.     UpdateWindow(m_hChatEdit);
  193. return TRUE;
  194. }
  195. BOOL CChatEdit::SetLimitText(INT nLimitText)
  196. {
  197. if ( m_hChatEdit )
  198. {
  199. SendMessage(m_hChatEdit, EM_LIMITTEXT, (WPARAM)nLimitText, 0);
  200. return TRUE;
  201. }
  202. return FALSE;
  203. }