011
09.06.2005, 09:52 Uhr
Dirk70
|
Zitat von Guybrush Threepwood: |
Wieso gibst du nicht die Messagebox aus und markierst dann den Text in deinem Feld?
|
Ähemm.. Aber genau das mach ich doch! Leider darf ich hier nicht einfach den ganzen Quellcode posten, aber vielleicht kann dieser Auszug mein Problem verdeutlichen:
Code: |
BOOL CTestdialog::PreTranslateMessage(MSG* pMsg) { aktWnd = GetFocus(); if (aktWnd == GetDlgItem(IDC_FELD1)) { if (pMsg->wParam == VK_DOWN) { ::TranslateAccelerator(m_hWnd, m_hAccel, pMsg); } } return CDialog::PreTranslateMessage(pMsg); }
void CTestdialog::OnVor() { if (ServerAnfrage() == false) { AfxMessageBox(_T("Keine weiteren Datensätze vorhanden")); } aktWnd->EnableWindow(true); GotoDlgCtrl(aktWnd); m_feld1_Ctrl.SetSel(0,-1); }
|
Wenn ich die <Nach Unten>-Taste drücke, wird nach PreTranslateMessage () in OnVor() eine Serveranfrage gestartet, die entweder den nächsten Satz ausgibt oder FALSE liefert. Im ersten Fall wird das Feld wie gewünscht markiert, im zweiten Fall aber nicht, obwohl laut Debugger SetSel() ausgeführt wird. Das kann meiner Meinung nach nur bedeuten, dass Windows CE nach dem Beenden der Funktion OnVor() die Markierung selbstständig wieder entfernt. Ich sage: BUG !!!
Zitat von ~krozey: |
du könntest die meldung eventuell ja auch im hauptfenster als text mit ton ausgeben und zwar so formatiert das man es nicht übersehen kann.
|
Das ist genau der Lösungsweg, den ich mir auch überlegt habe. Ich werde im unteren Bereich der Maske ein Statusfeld integrieren, dass diverse Informationen (z.B. lfd. Satznummer) enthält. Hier würde ich dann auch die Meldung reinschreiben. Gibt es vielleicht eine Methode, die die Farbe eines Editfelds ändert? Würde es nämlich bei Fehlermeldungen gerne Gelb markieren, damit es auffällt (Tonausgabe ist bei unseren mobilen Geräten meist deaktiviert). Hilfe- und Suchfunktion haben mir da bisher leider nicht weiterhelfen können *schäm* -- Grüße aus dem Saarland Dirk |