MFC Edit % anfangen und ersetzen
-
Hallo
ich möchte gern im Edit ( DDX_Text(pDX, IDC_EDT_SEARCH, m_strSearch); ) die tastenkompi shift+5 abfangen und dem Programm erklären das % = * ist. Somit soll es später wurst sein ob ich in der suche eingebe:%test%
*test*Zur zeit geht das Suchen im Programm nur mit % was total nervt.
Ist sowas in der PreTranslateMessage Funktion möglich ?
wenn ja wie.BOOL CDatenbank::PreTranslateMessage(MSG* pMsg) { // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen // Falls Taste gedrueckt wurde if (pMsg->message == WM_KEYDOWN) { // Wenn ESCAPE, dann Nachricht verwerfen if (pMsg->wParam == VK_ESCAPE) // Nachricht verwerfen! return 1; // Wenn RETURN, dann nach TAB umwandeln // if (pMsg->wParam == VK_RETURN) pMsg->wParam = VK_TAB; } // Standard-Behandlung durchfuehren if(pMsg->wParam == VK_RETURN){ if(GetDlgItem(IDC_EDT_SEARCH) == GetFocus()){ UpdateData(TRUE); if(m_strSearch.GetLength() > 0){ if(atof(m_strSearch) > 0) // ist es eine Zahl? SearchNameNumber(FALSE); else SearchNameNumber(); } } return TRUE; } return CDialog::PreTranslateMessage(pMsg); }
Edit:
es wäre sicher besser auf den Such Button ein Funktion zu legen das ASCII von * einfach beim drücken der Suche zu ASCII % zu ersetzen oder?So das man eingeben kann *Test aber beim Drücken der Suchfunktion gesucht wird %Test
Was meint Ihr?
Ideen ?
-
Das geht nicht mit PreTranslateMessage.
1. Edit Control subclassen
2. OnChar überschreiben. Handler schreiben der prüft was Du wie behandeln willst
3. Nachricht anpassen und statt Default oder die Baseklasse aufrufen DefWindowProc verwenden.Ansonsten ist Dein Ansatz die VK_RETURN Taste umzubiegen auch nicht korrekt.
Verwende direkt NextDlgCtl.
Ansonsten lies mal:
http://blog.m-ri.de/index.php/2008/09/21/die-return-taste-in-dialogen-eine-unendliche-geschichte/