//When an event (e.g Click) occurs this method calls functions, via function pointers, that are assigned //as event handlers void Control::Update() { bool oldMouseIn = this->mouseIn; bool oldMouseUp = this->mouseUp; bool oldPressed = this->pressed; SetMouseIn(); SetMouseUp(); SetPressed(oldMouseUp); SetClicked(oldPressed); //check for mouse enetering/leaving if(oldMouseIn !=this->mouseIn && !this->clicked) { if(this->mouseIn && MouseEnter) { MouseEnter(); } else { if(MouseLeave) { MouseLeave(); } } } //check for pressed if(this->pressed && Pressed) { inPress = true; Pressed(); } //check for click if(this->clicked && Clicked) { Clicked(); } if(this->mouseUp) { if(oldMouseUp != this->mouseUp) { if(MouseUp) { MouseUp(); } if(inPress && OutOfPress) { OutOfPress(); inPress=false; } } } //loop through all child controls and update list<Control*>::iterator i; for(i = this->controls.begin(); i != this->controls.end(); i++) { (*i)->Update(); } }
//************************************************************************************************** void LTDrawToolBar::OnMouseLeave() { // TODO: Add your message handler code here and/or call default MouseLeave(); CClientDC dc(this); p_PenButton->OnMouseLeave(&dc); p_RectButton->OnMouseLeave(&dc); p_ArrowButton->OnMouseLeave(&dc); __super::OnMouseLeave(); }
void DisplayPopup::MouseMove(Point p, dword flags) { p += GetScreenView().TopLeft(); if(!slim.Contains(p)) MouseLeave(); }