Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » welches control bei mausklick

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
10.11.2003, 14:32 Uhr
~RES
Gast


hi!

wie stellt man bei ON_WM_LBUTTON() fest, auf welches Control (Id) man gerade geklickt hat?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.11.2003, 14:51 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


eigentlich ist diese nachricht direkt mit dem button verbunden auf den du geklickt hast. macht für mich keinen sinn deine frage

wenn du einen CWnd* hast (z.b. mit GetFocus holen) kannst du dir mit GetDlgCtrlID() die ID besorgen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.11.2003, 15:19 Uhr
~res
Gast


die nachricht sollte nicht mit einem best. control verbunden sein, sondern es soll festgestellt werden, elches control sich gerade unter dem mauszeiger befindet.
vielleicht habe ich meine frage falsch formuliert.
anwendung: jenes control, welches ich aktuell anklicke, soll zur laufzeit in seiner größe/lage (mit der maus) veränderbar sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.11.2003, 15:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


so lange ein element einen Fokus erhalten kann müsste das eigentlich so gehen wie ich oben beschrieben habe
Angenommen du hast ein Dialog mit 2 buttons,


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


    if(GetFocus()->GetDlgCtrlID()==IDC_BUTTON1) AfxMessageBox("1");
    if(GetFocus()->GetDlgCtrlID()==IDC_BUTTON2) AfxMessageBox("2");

    AfxMessageBox("LeftKlick");

}

void CTestDlg::OnButton1(){
    SendMessage(WM_LBUTTONDOWN);
}

void CTestDlg::OnButton2(){
    SendMessage(WM_LBUTTONDOWN);
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.11.2003, 15:43 Uhr
~res
Gast


danke!

er schmiert mir allerdings bei if(GetFocus()->GetDlgCtrlID()=.. ab mit:
ASSERT(::IsWindow(m_hWnd));
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.11.2003, 15:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das liegt wohl daran das dein Buttons bzw. controls anders als meine heissen.
also nicht IDC_BUTTON1 und IDC_BUTTON2
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.11.2003, 15:54 Uhr
~res
Gast


nö,

die habe ich natürlich angepasst.
auch
CWnd* pwndCtrl = GetFocus();
// get the control ID which is
// presently having the focus
int ctrl_ID = pwndCtrl->GetDlgCtrlID(); // <<-----crash!!!
switch (ctrl_ID)
{ //if the control is the EditBox
case IDC_EDIT1:break;
}

funzt nicht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.11.2003, 15:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


bei mir geht das ka warum das nicht bei dir geht
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.11.2003, 16:17 Uhr
~res
Gast


konkret:

wollte dieses projekt anpassen:
www.codeproject.com/dialog/dynamicdialog.asp?target=dynamic
und zwar je nachdem aufwelches control man klickt, soll dieses zur laufzeit anpassbar sein.
in diesem prj. ist es fest einprogr.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.11.2003, 18:03 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Nimm einfach PreTranslateMessage

C++:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
   // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
   if(pMsg->message == WM_LBUTTONDOWN)
   {
      CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd);
      pWnd->ShowWindow(FALSE);
   }

   return CDialog::PreTranslateMessage(pMsg);
}


mfg
--
 
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: