1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
// ...
HWND g_hEdit;
WNDPROC g_EditProc;
// ...
// Subclassed edit window procedure.
LRESULT WINAPI EditProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// Check for Enter key to start sending chunks.
switch (msg)
{
case WM_KEYDOWN:
switch (LOWORD(wParam))
{
case VK_RETURN:
SendChat();
break; // tried replacing with 'return 0;' and it did not have the desired effect.
}
break;
case WM_CLOSE:
SetWindowLong(g_hEdit, GWL_WNDPROC, (DWORD)g_EditProc);
break;
case WM_DESTROY:
SetWindowLong(g_hEdit, GWL_WNDPROC, (DWORD)g_EditProc);
break;
}
return CallWindowProc(g_EditProc, hWnd, msg, wParam, lParam);
}
// Main window procedure.
LRESULT CALLBACK MainWinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
RECT rcMain;
switch (msg)
{
// Build child windows.
case WM_CREATE:
g_hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 290, 170, hWnd, NULL, GetModuleHandle(NULL), NULL);
g_EditProc = (WNDPROC)SetWindowLong(g_hEdit, GWL_WNDPROC, (DWORD)EditProc);
break;
// ...
|