本文整理汇总了C++中MouseMessage类的典型用法代码示例。如果您正苦于以下问题:C++ MouseMessage类的具体用法?C++ MouseMessage怎么用?C++ MouseMessage使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MouseMessage类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bool
ScrollBarSlider::moved(MouseMessage& message)
{
if(_oldMousePos.x() >= 0.0f)
{
if(state() == Button::down)
{
int value = _scrollBar.value();
switch(_scrollBar.justification())
{
case ScrollBar::horizontal:
{
const float delta = message.x() - _oldMousePos.x();
if(delta != 0) moveHorizontally(delta);
}
break;
case ScrollBar::vertical:
{
const float delta = message.y() - _oldMousePos.y();
if(delta != 0) moveVertically(delta);
}
break;
}
if(value != _scrollBar.value()) _scrollBar.sliderMoved(_scrollBar.value());
}
}
_oldMousePos.setX(message.x());
_oldMousePos.setY(message.y());
return true;
}
示例2: switch
bool ColorWheel::onProcessMessage(ui::Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
captureMouse();
// Continue...
case kMouseMoveMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
app::Color color = pickColor(
mouseMsg->position()
- getBounds().getOrigin());
if (color != app::Color::fromMask()) {
base::ScopedValue<bool> switcher(m_lockColor, m_harmonyPicked, false);
StatusBar::instance()->showColor(0, "", color);
if (hasCapture())
ColorChange(color, mouseMsg->buttons());
}
break;
}
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
}
return true;
case kSetCursorMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
app::Color color = pickColor(
mouseMsg->position()
- getBounds().getOrigin());
if (color.getType() != app::Color::MaskType) {
ui::set_mouse_cursor(kEyedropperCursor);
return true;
}
break;
}
}
return Widget::onProcessMessage(msg);
}
示例3: MouseDown
void ClickableControl::MouseDown(const Point& position, const MouseMessage& message) {
if (message.GetMouseButton() == MouseButton::Left) {
SetIsFocused(true);
BeginPress(PressType::Mouse);
CheckIsMousePressed(position, message.wParam);
}
}
示例4: delta
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bool
FrameWindowMouseListener::moved(MouseMessage& message)
{
bool isHandled = false;
if(frameWindow_.isMovable())
{
if(WindowManager::instance().captureWindow() == &frameWindow_)
{
Core::Vector2 delta(message.x() - _oldMousePos.x(), message.y() - _oldMousePos.y());
frameWindow_.setPosition(frameWindow_.position() + delta);
}
_oldMousePos.setX(message.x());
_oldMousePos.setY(message.y());
isHandled = true;
}
return isHandled;
}
示例5: switch
bool ColorSpectrum::onProcessMessage(ui::Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
captureMouse();
// Continue...
case kMouseMoveMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
app::Color color = pickColor(mouseMsg->position());
if (color != app::Color::fromMask()) {
StatusBar::instance()->showColor(0, "", color);
if (hasCapture())
ColorChange(color, mouseMsg->buttons());
}
break;
}
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
}
return true;
case kSetCursorMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (childrenBounds().contains(mouseMsg->position())) {
ui::set_mouse_cursor(kEyedropperCursor);
return true;
}
break;
}
}
return Widget::onProcessMessage(msg);
}
示例6: onProcessMessage
bool onProcessMessage(Message* msg) override {
switch (msg->type()) {
case kSetCursorMessage:
ui::set_mouse_cursor(kArrowCursor);
return true;
case kMouseUpMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (mouseMsg->right()) {
if (hasCapture()) {
releaseMouse();
Popup();
setSelected(false);
return true;
}
}
break;
}
}
return SkinButton<Button>::onProcessMessage(msg);
}
示例7: switch
bool ColorTintShadeTone::onProcessMessage(ui::Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
if (manager()->getCapture())
break;
captureMouse();
// Continue...
case kMouseMoveMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (msg->type() == kMouseDownMessage)
m_capturedInHue = inHueBarArea(mouseMsg->position());
app::Color color = getColorByPosition(mouseMsg->position());
if (color != app::Color::fromMask()) {
StatusBar::instance()->showColor(0, "", color);
if (hasCapture())
ColorChange(color, mouseMsg->buttons());
}
break;
}
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
}
return true;
case kSetCursorMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (childrenBounds().contains(mouseMsg->position())) {
ui::set_mouse_cursor(kEyedropperCursor);
return true;
}
break;
}
}
return ColorSelector::onProcessMessage(msg);
}
示例8: if
bool StateWithWheelBehavior::onMouseWheel(Editor* editor, MouseMessage* msg)
{
int dz = msg->wheelDelta().x + msg->wheelDelta().y;
WHEEL_ACTION wheelAction = WHEEL_NONE;
bool scrollBigSteps = false;
// Alt+mouse wheel changes the fg/bg colors
if (msg->altPressed()) {
if (msg->shiftPressed())
wheelAction = WHEEL_BG;
else
wheelAction = WHEEL_FG;
}
// Normal behavior: mouse wheel zooms
else if (Preferences::instance().editor.zoomWithWheel()) {
if (msg->ctrlPressed())
wheelAction = WHEEL_FRAME;
else if (msg->wheelDelta().x != 0 || msg->shiftPressed())
wheelAction = WHEEL_HSCROLL;
else
wheelAction = WHEEL_ZOOM;
}
// For laptops, it's convenient to that Ctrl+wheel zoom (because
// it's the "pinch" gesture).
else {
if (msg->ctrlPressed())
wheelAction = WHEEL_ZOOM;
else if (msg->wheelDelta().x != 0 || msg->shiftPressed())
wheelAction = WHEEL_HSCROLL;
else
wheelAction = WHEEL_VSCROLL;
}
switch (wheelAction) {
case WHEEL_NONE:
// Do nothing
break;
case WHEEL_FG:
{
int newIndex = 0;
if (ColorBar::instance()->getFgColor().getType() == app::Color::IndexType) {
int lastIndex = get_current_palette()->size()-1;
newIndex = ColorBar::instance()->getFgColor().getIndex() + dz;
newIndex = MID(0, newIndex, lastIndex);
}
ColorBar::instance()->setFgColor(app::Color::fromIndex(newIndex));
}
break;
case WHEEL_BG:
{
int newIndex = 0;
if (ColorBar::instance()->getBgColor().getType() == app::Color::IndexType) {
int lastIndex = get_current_palette()->size()-1;
newIndex = ColorBar::instance()->getBgColor().getIndex() + dz;
newIndex = MID(0, newIndex, lastIndex);
}
ColorBar::instance()->setBgColor(app::Color::fromIndex(newIndex));
}
break;
case WHEEL_FRAME:
{
Command* command = CommandsModule::instance()->getCommandByName
((dz < 0) ? CommandId::GotoNextFrame:
CommandId::GotoPreviousFrame);
if (command)
UIContext::instance()->executeCommand(command);
}
break;
case WHEEL_ZOOM: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
render::Zoom zoom = editor->zoom();
if (dz < 0) {
while (dz++ < 0)
zoom.in();
}
else {
while (dz-- > 0)
zoom.out();
}
if (editor->zoom() != zoom) {
bool center = Preferences::instance().editor.zoomFromCenterWithWheel();
editor->setZoomAndCenterInMouse(
zoom, mouseMsg->position(),
(center ? Editor::ZoomBehavior::CENTER:
Editor::ZoomBehavior::MOUSE));
}
break;
}
case WHEEL_HSCROLL:
case WHEEL_VSCROLL: {
//.........这里部分代码省略.........
示例9: switch
bool ToolBar::ToolStrip::onProcessMessage(Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
captureMouse();
// fallthrough
case kMouseMoveMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
gfx::Point mousePos = mouseMsg->position();
ToolBox* toolbox = App::instance()->getToolBox();
Tool* hot_tool = NULL;
Rect toolrc;
int index = 0;
for (ToolIterator it = toolbox->begin(); it != toolbox->end(); ++it) {
Tool* tool = *it;
if (tool->getGroup() == m_group) {
toolrc = getToolBounds(index++);
if (toolrc.contains(Point(mousePos.x, mousePos.y))) {
hot_tool = tool;
break;
}
}
}
// Hot button changed
if (m_hotTool != hot_tool) {
m_hotTool = hot_tool;
invalidate();
// Show the tooltip for the hot tool
if (m_hotTool && !hasCapture())
m_toolbar->openTipWindow(m_group, m_hotTool);
else
m_toolbar->closeTipWindow();
if (m_hotTool)
StatusBar::instance()->showTool(0, m_hotTool);
}
if (hasCapture()) {
if (m_hotTool)
m_toolbar->selectTool(m_hotTool);
Widget* pick = getManager()->pick(mouseMsg->position());
if (ToolBar* bar = dynamic_cast<ToolBar*>(pick)) {
releaseMouse();
MouseMessage* mouseMsg2 = new MouseMessage(
kMouseDownMessage,
mouseMsg->buttons(),
mouseMsg->position());
mouseMsg2->addRecipient(bar);
getManager()->enqueueMessage(mouseMsg2);
}
}
break;
}
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
closeWindow();
}
break;
}
return Widget::onProcessMessage(msg);
}
示例10: switch
bool IntEntry::onProcessMessage(Message* msg)
{
switch (msg->type()) {
// Reset value if it's out of bounds when focus is lost
case kFocusLeaveMessage:
setValue(MID(m_min, getValue(), m_max));
deselectText();
break;
case kMouseDownMessage:
requestFocus();
captureMouse();
openPopup();
selectAllText();
return true;
case kMouseMoveMessage:
if (hasCapture()) {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
Widget* pick = manager()->pick(mouseMsg->position());
if (pick == &m_slider) {
releaseMouse();
MouseMessage mouseMsg2(kMouseDownMessage,
mouseMsg->pointerType(),
mouseMsg->buttons(),
mouseMsg->modifiers(),
mouseMsg->position());
m_slider.sendMessage(&mouseMsg2);
}
}
break;
case kMouseWheelMessage:
if (isEnabled()) {
int oldValue = getValue();
int newValue = oldValue
+ static_cast<MouseMessage*>(msg)->wheelDelta().x
- static_cast<MouseMessage*>(msg)->wheelDelta().y;
newValue = MID(m_min, newValue, m_max);
if (newValue != oldValue) {
setValue(newValue);
selectAllText();
}
return true;
}
break;
case kKeyDownMessage:
if (hasFocus() && !isReadOnly()) {
KeyMessage* keymsg = static_cast<KeyMessage*>(msg);
int chr = keymsg->unicodeChar();
if (chr >= 32 && (chr < '0' || chr > '9')) {
// "Eat" all keys that aren't number
return true;
}
// Else we use the default Entry processing function which
// will process keys like Left/Right arrows, clipboard
// handling, etc.
}
break;
}
return Entry::onProcessMessage(msg);
}
示例11: switch
bool FileList::onProcessMessage(Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
captureMouse();
case kMouseMoveMessage:
if (hasCapture()) {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
int th = getTextHeight();
int y = getBounds().y;
IFileItem* old_selected = m_selected;
m_selected = NULL;
// rows
for (FileItemList::iterator
it=m_list.begin();
it!=m_list.end(); ++it) {
IFileItem* fi = *it;
gfx::Size itemSize = getFileItemSize(fi);
if (((mouseMsg->position().y >= y) &&
(mouseMsg->position().y < y+th+4*jguiscale())) ||
(it == m_list.begin() && mouseMsg->position().y < y) ||
(it == m_list.end()-1 && mouseMsg->position().y >= y+th+4*jguiscale())) {
m_selected = fi;
makeSelectedFileitemVisible();
break;
}
y += itemSize.h;
}
if (old_selected != m_selected) {
generatePreviewOfSelectedItem();
invalidate();
// Emit "FileSelected" event.
onFileSelected();
}
}
break;
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
}
break;
case kKeyDownMessage:
if (hasFocus()) {
KeyMessage* keyMsg = static_cast<KeyMessage*>(msg);
KeyScancode scancode = keyMsg->scancode();
int unicodeChar = keyMsg->unicodeChar();
int select = getSelectedIndex();
View* view = View::getView(this);
int bottom = m_list.size();
switch (scancode) {
case kKeyUp:
if (select >= 0)
select--;
else
select = 0;
break;
case kKeyDown:
if (select >= 0)
select++;
else
select = 0;
break;
case kKeyHome:
select = 0;
break;
case kKeyEnd:
select = bottom-1;
break;
case kKeyPageUp:
case kKeyPageDown: {
int sgn = (scancode == kKeyPageUp) ? -1: 1;
gfx::Rect vp = view->getViewportBounds();
if (select < 0)
select = 0;
select += sgn * vp.h / (getTextHeight()+4*jguiscale());
break;
}
case kKeyLeft:
case kKeyRight:
if (select >= 0) {
gfx::Rect vp = view->getViewportBounds();
int sgn = (scancode == kKeyLeft) ? -1: 1;
gfx::Point scroll = view->getViewScroll();
//.........这里部分代码省略.........
示例12: switch
//.........这里部分代码省略.........
break;
}
if (cmd == EntryCmd::NoOp) {
if (keymsg->unicodeChar() >= 32) {
executeCmd(EntryCmd::InsertChar, keymsg->unicodeChar(),
(msg->shiftPressed()) ? true: false);
// Select dead-key
if (keymsg->isDeadKey()) {
if (lastCaretPos() < m_maxsize)
selectText(m_caret-1, m_caret);
}
return true;
}
// Consume all key down of modifiers only, e.g. so the user
// can press first "Ctrl" key, and then "Ctrl+C"
// combination.
else if (keymsg->scancode() >= kKeyFirstModifierScancode) {
return true;
}
else {
break; // Propagate to manager
}
}
executeCmd(cmd, keymsg->unicodeChar(),
(msg->shiftPressed()) ? true: false);
return true;
}
break;
case kMouseDownMessage:
captureMouse();
case kMouseMoveMessage:
if (hasCapture()) {
bool is_dirty = false;
int c = getCaretFromMouse(static_cast<MouseMessage*>(msg));
if (static_cast<MouseMessage*>(msg)->left() || !isPosInSelection(c)) {
// Move caret
if (m_caret != c) {
setCaretPos(c);
is_dirty = true;
invalidate();
}
// Move selection
if (m_recent_focused) {
m_recent_focused = false;
m_select = m_caret;
}
else if (msg->type() == kMouseDownMessage)
m_select = m_caret;
}
// Show the caret
if (is_dirty) {
if (shouldStartTimer(true))
m_timer.start();
m_state = true;
}
return true;
}
break;
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
if (mouseMsg->right()) {
// This flag is disabled in kFocusEnterMessage message handler.
m_lock_selection = true;
showEditPopupMenu(mouseMsg->position());
requestFocus();
}
}
return true;
case kDoubleClickMessage:
forwardWord();
m_select = m_caret;
backwardWord();
invalidate();
return true;
case kMouseEnterMessage:
case kMouseLeaveMessage:
// TODO theme stuff
if (isEnabled())
invalidate();
break;
}
return Widget::onProcessMessage(msg);
}
示例13: switch
bool ComboBoxEntry::onProcessMessage(Message* msg)
{
switch (msg->type()) {
case kKeyDownMessage:
if (hasFocus()) {
KeyMessage* keymsg = static_cast<KeyMessage*>(msg);
KeyScancode scancode = keymsg->scancode();
if (!m_comboBox->isEditable()) {
if (scancode == kKeySpace ||
scancode == kKeyEnter ||
scancode == kKeyEnterPad) {
m_comboBox->switchListBox();
return true;
}
}
else {
if (scancode == kKeyEnter ||
scancode == kKeyEnterPad) {
m_comboBox->switchListBox();
return true;
}
}
}
break;
case kMouseDownMessage:
if (m_comboBox->isClickOpen()) {
m_comboBox->switchListBox();
}
if (m_comboBox->isEditable()) {
getManager()->setFocus(this);
}
else {
captureMouse();
return true;
}
break;
case kMouseUpMessage:
if (hasCapture())
releaseMouse();
break;
case kMouseMoveMessage:
if (hasCapture()) {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
Widget* pick = getManager()->pick(mouseMsg->position());
Widget* listbox = m_comboBox->m_listbox;
if (pick != NULL && (pick == listbox || pick->hasAncestor(listbox))) {
releaseMouse();
MouseMessage mouseMsg2(kMouseDownMessage,
mouseMsg->buttons(), mouseMsg->position());
pick->sendMessage(&mouseMsg2);
return true;
}
}
break;
}
return Entry::onProcessMessage(msg);
}
示例14: switch
bool PaletteView::onProcessMessage(Message* msg)
{
switch (msg->type()) {
case kMouseDownMessage:
captureMouse();
/* continue... */
case kMouseMoveMessage: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
gfx::Rect cpos = getChildrenBounds();
int req_w, req_h;
request_size(&req_w, &req_h);
int mouse_x = MID(cpos.x, mouseMsg->position().x, cpos.x+req_w-this->border_width.r-1);
int mouse_y = MID(cpos.y, mouseMsg->position().y, cpos.y+req_h-this->border_width.b-1);
app::Color color = getColorByPosition(mouse_x, mouse_y);
if (color.getType() == app::Color::IndexType) {
int idx = color.getIndex();
StatusBar::instance()->showColor(0, "", color, 255);
if (hasCapture() && idx != m_currentEntry) {
if (!msg->ctrlPressed())
clearSelection();
if (msg->shiftPressed())
selectRange(m_rangeAnchor, idx);
else
selectColor(idx);
// Emit signal
IndexChange(idx);
}
}
if (hasCapture())
return true;
break;
}
case kMouseUpMessage:
releaseMouse();
return true;
case kMouseWheelMessage: {
View* view = View::getView(this);
if (view) {
gfx::Point scroll = view->getViewScroll();
scroll += static_cast<MouseMessage*>(msg)->wheelDelta() * 3 * m_boxsize;
view->setViewScroll(scroll);
}
break;
}
case kMouseLeaveMessage:
StatusBar::instance()->clearText();
break;
}
return Widget::onProcessMessage(msg);
}
示例15: if
bool StandbyState::onMouseWheel(Editor* editor, MouseMessage* msg)
{
int dz = msg->wheelDelta().x + msg->wheelDelta().y;
WHEEL_ACTION wheelAction = WHEEL_NONE;
bool scrollBigSteps = false;
// Alt+mouse wheel changes the fg/bg colors
if (msg->altPressed()) {
if (msg->shiftPressed())
wheelAction = WHEEL_BG;
else
wheelAction = WHEEL_FG;
}
// Normal behavior: mouse wheel zooms
else if (UIContext::instance()->settings()->getZoomWithScrollWheel()) {
if (msg->ctrlPressed())
wheelAction = WHEEL_FRAME;
else if (msg->wheelDelta().x != 0 || msg->shiftPressed())
wheelAction = WHEEL_HSCROLL;
else
wheelAction = WHEEL_ZOOM;
}
// For laptops, it's convenient to that Ctrl+wheel zoom (because
// it's the "pinch" gesture).
else {
if (msg->ctrlPressed())
wheelAction = WHEEL_ZOOM;
else if (msg->wheelDelta().x != 0 || msg->shiftPressed())
wheelAction = WHEEL_HSCROLL;
else
wheelAction = WHEEL_VSCROLL;
}
switch (wheelAction) {
case WHEEL_NONE:
// Do nothing
break;
case WHEEL_FG:
{
int newIndex = 0;
if (ColorBar::instance()->getFgColor().getType() == app::Color::IndexType) {
newIndex = ColorBar::instance()->getFgColor().getIndex() + dz;
newIndex = MID(0, newIndex, 255);
}
ColorBar::instance()->setFgColor(app::Color::fromIndex(newIndex));
}
break;
case WHEEL_BG:
{
int newIndex = 0;
if (ColorBar::instance()->getBgColor().getType() == app::Color::IndexType) {
newIndex = ColorBar::instance()->getBgColor().getIndex() + dz;
newIndex = MID(0, newIndex, 255);
}
ColorBar::instance()->setBgColor(app::Color::fromIndex(newIndex));
}
break;
case WHEEL_FRAME:
{
Command* command = CommandsModule::instance()->getCommandByName
((dz < 0) ? CommandId::GotoNextFrame:
CommandId::GotoPreviousFrame);
if (command)
UIContext::instance()->executeCommand(command, NULL);
}
break;
case WHEEL_ZOOM: {
MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
int zoom = MID(MIN_ZOOM, editor->zoom()-dz, MAX_ZOOM);
if (editor->zoom() != zoom)
editor->setZoomAndCenterInMouse(zoom,
mouseMsg->position().x, mouseMsg->position().y,
Editor::kDontCenterOnZoom);
break;
}
case WHEEL_HSCROLL:
case WHEEL_VSCROLL: {
View* view = View::getView(editor);
gfx::Rect vp = view->getViewportBounds();
int dx = 0;
int dy = 0;
if (wheelAction == WHEEL_HSCROLL) {
dx = dz * vp.w;
}
else {
dy = dz * vp.h;
}
if (scrollBigSteps) {
dx /= 2;
dy /= 2;
}
else {
//.........这里部分代码省略.........