Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Klick auf Control

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.05.2007, 17:15 Uhr
Lensflare



Hallo.

wie kann ich einen Klick auf ein Control wie zB CEdit abfangen, ohne für jedes Control eine OnBnClickedButton1 usw Funktion zu erstellen?

Ich habe folgendes probiert:

C++:
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
  CDialog::OnLButtonDown(nFlags, point);

  //aktion...
}


damit werden nur die klicks auf das Dialogfenster abgefangen, nicht die klicks auf CEdits oder CButtons


C++:
void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
  if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
  }
  else if(nID == IDC_EDIT1) // ((nID & 0xFFF0) == IDC_EDIT1) geht auch nicht
  {
    //zum testen AboutDialog öffnen
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
  }
  else
  {
    CDialog::OnSysCommand(nID, lParam);
  }
}


das geht auch nicht. der AboutDialog wird nie geöffnet. Nur wenn man ihn wie vorgesehen im Menü wählt.

Ich muss auch wissen, welches Control angeklickt wurde, also würde wohl das hier nicht gehen:

C++:
ON_CONTROL_RANGE(BN_CLICKED,100,110,OnAnyButton)


--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.05.2007, 17:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, die ON_CONTROL_RANGE - Memberfunktionen sind als


C++:
afx_msg void OnDoSomething( UINT nID );



definiert
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.05.2007, 18:02 Uhr
mmc20
puss in boots


das müsstes du in PreTranslateMessage(..) in etwa so abfangen können...

C++:
BOOL CDialog::PreTranslateMessage(MSG* pMsg)
{
    if ( pMsg->message == WM_LBUTTONDOWN ) {
        CPoint point = pMsg->pt;
        ClientToScreen( &point );
    //    CWnd* deinEdit;
        if ( deinEdit == WindowFromPoint(point) ) {
// ....
                }
        return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
}



Bearbeitung:
zu spät..., flo's ist natürlich besser, da haste gleich die ID

Dieser Post wurde am 25.05.2007 um 18:05 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2007, 19:16 Uhr
Lensflare



jup, habs eben mit ON_CONTROL_RANGE gemacht und es geht.
Danke
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: