Hej,Fånga tecken med PreTranslateMessage
Jag har nästan en helt fungerande funktion/applikation som fångar alla teckan som användaren skriver i en CRichEditCtrl med PreTranslateMessage och skickar sedan till en Telnet server.
I min PreTranslateMessage funktion returnerar jag FALSE därför att Telnetservern returnerar även det som operatören skriver (annars blir det dduubbbbllaa tteecckkeenn).
Problemet kommer när jag vill hantera BACKSPACE. Jag fångar upp kommandot, skickar det till telnetservern och får tillbaka tre tecken \b, space och \b ( vad den gör är att den raderar tecknet två gånger och så ska det vara), men den raderar två tecken bakå istället för ettt. Det verkar som att ett BACKSPACE trillar igenom någonstans.
Ex:
Jag har har skrivit ls som nedan
home> ls
och sen trycker BAKCSPACE EN GÅNG så vill jag att s:et ska försvinna, men både l:et och s:et försvinner.
Någon som har någon idé?
Jag sitter med Visual Studio 6. Min PreTranslateMessage funktion ser ut så här:
BOOL CMultiTerminalDlg::PreTranslateMessage(LPMSG lpmsg)
{
if ((lpmsg->message == WM_CHAR) && (lpmsg->hwnd == m_TelnetTerminal.m_hWnd))
{
m_TelnetCmdString = (unsigned char)lpmsg->wParam;
m_pWorkerThread->PostThreadMessage(THREAD_SEND_PARTIAL_TELNET_COMMAND, 0, (LONG)&m_TelnetCmdString);
return TRUE;
}
return CDialog::PreTranslateMessage(lpmsg);
}