Frage zu PreTranslateMessage
-
Hi,
um Nachrichten abzufangen wählt man gewöhnlich folgenden Ansatz:
BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) { //hier kann man eine Mausbewegung abfangen if( pMsg->message == WM_MOUSEMOVE ) { //tue irgendwas... } //hier kann man abfragen, ob ein Key gedrückt wurde if( pMsg->message == WM_KEYDOWN ) { //tue irgendwas... } return CDialog::PreTranslateMessage(pMsg); }Soweit so gut. Wenn ich aber einen UnterDialog in meinem HauptDialog wie folgt einbeziehe:
void CMainDlg::ActivateSubDlg() { m_SubDlg.Create(IDD_SUB_DIALOG, this); //wobei m_SubDlg eine Variable des UnterDialogs ist. m_SubDlg.ShowWindow(SW_SHOW); //tue irgendwas... }...dann kann ich in meinem UnterDialog mit PreTranslateMessage die Nachricht für's Key-Drücken nicht mehr abfangen

BOOL SubDlg::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { //hier komme ich nie hin, egal welche Taste ich drücke } return CDialog::PreTranslateMessage(pMsg); }Hat jemand eine Idee?
Danbke im Voraus
-
BOOL CProjekt::PreTranslateMessage(MSG* pMsg) { CString KeyPressed; CString Key ="1234567890+-*//"; // erlaubte zeichen int keyAscii; CWnd* Editfeld = GetDlgItem(IDC_EDITn);// Editfelder in der Klasse if ( (pMsg->message == WM_CHAR && this->GetFocus() == Editfeld) || (pMsg->wParam==VK_RETURN) )// Im Editfeld oder die Entertaste { keyAscii = pMsg->wParam; KeyPressed.Format(_T("%c"),keyAscii); if (Key.Find(KeyPressed,0) == -1 && keyAscii !=8) return 1; } else { return CDialog::PreTranslateMessage(pMsg); } return false; }so geht es bei mir wenn ich bestimmte Zeichen "erlauben" will!
hoffe es hilft
sven