本文整理汇总了C++中MouseMessage::left方法的典型用法代码示例。如果您正苦于以下问题:C++ MouseMessage::left方法的具体用法?C++ MouseMessage::left怎么用?C++ MouseMessage::left使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MouseMessage
的用法示例。
在下文中一共展示了MouseMessage::left方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onProcessMessage
bool Tabs::onProcessMessage(Message* msg)
{
switch (msg->type()) {
case kMouseEnterMessage:
case kMouseMoveMessage:
calculateHot();
return true;
case kMouseLeaveMessage:
if (m_hot != NULL) {
m_hot = NULL;
invalidate();
}
return true;
case kMouseDownMessage:
case kMouseUpMessage:
if (m_hot != NULL) {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (m_selected != m_hot) {
m_selected = m_hot;
invalidate();
}
// Left button is processed in mouse down message, right
// button is processed in mouse up.
if (m_selected && m_delegate &&
((mouseMsg->left() && msg->type() == kMouseDownMessage) ||
(!mouseMsg->left() && msg->type() == kMouseUpMessage))) {
m_delegate->clickTab(this, m_selected->view, mouseMsg->buttons());
}
}
return true;
case kMouseWheelMessage: {
int dz =
(static_cast<MouseMessage*>(msg)->wheelDelta().x -
static_cast<MouseMessage*>(msg)->wheelDelta().y) * getBounds().w/6;
m_begScrollX = m_scrollX;
if (m_ani != ANI_SMOOTH_SCROLL)
m_endScrollX = m_scrollX + dz;
else
m_endScrollX += dz;
// Limit endScrollX position (to improve animation ending to the correct position)
{
int max_x = getMaxScrollX();
m_endScrollX = MID(0, m_endScrollX, max_x);
}
startAni(ANI_SMOOTH_SCROLL);
return true;
}
case kTimerMessage: {
switch (m_ani) {
case ANI_NONE:
// Do nothing
break;
case ANI_SCROLL: {
ScrollButton* button = dynamic_cast<ScrollButton*>(getManager()->getCapture());
if (button != NULL)
setScrollX(m_scrollX + button->getDirection()*8*static_cast<TimerMessage*>(msg)->count());
break;
}
case ANI_SMOOTH_SCROLL: {
if (m_ani_t == ANI_SMOOTH_SCROLL_TICKS) {
stopAni();
setScrollX(m_endScrollX);
}
else {
// Lineal
//setScrollX(m_begScrollX + m_endScrollX - m_begScrollX) * m_ani_t / 10);
// Exponential
setScrollX(m_begScrollX +
(m_endScrollX - m_begScrollX) * (1.0-std::exp(-10.0 * m_ani_t / (double)ANI_SMOOTH_SCROLL_TICKS)));
}
break;
}
case ANI_ADDING_TAB: {
if (m_ani_t == ANI_ADDING_TAB_TICKS)
stopAni();
invalidate();
break;
}
case ANI_REMOVING_TAB: {
if (m_ani_t == ANI_REMOVING_TAB_TICKS)
stopAni();
invalidate();
break;
}
}
++m_ani_t;
break;
}
//.........这里部分代码省略.........