⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 button.cpp

📁 CS架构的多平台的GUI系统
💻 CPP
字号:
/***************************************************************************    begin                : Tue Nov 2 2004    copyright            : (C) 2004 - 2005 by Alper Akcan    email                : distchx@yahoo.com ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU Lesser General Public License as        * *   published by the Free Software Foundation; either version 2.1 of the  * *   License, or (at your option) any later version.                       * *                                                                         * ***************************************************************************/#include "../lib/xynth_.h"#include "widget.h"void SButton::objectDraw (void){        buttonHandler->handlerAdd();	SFrame::objectDraw();}void SButton::objectGeometry (int x, int y, int w, int h){        buttonHandler->handlerHndl->mouse.x = x;        buttonHandler->handlerHndl->mouse.y = y;        buttonHandler->handlerHndl->mouse.w = w;        buttonHandler->handlerHndl->mouse.h = h;	SFrame::objectGeometry(x, y, w, h);}void SButton::buttonPressed (int button){}void SButton::buttonReleased (int button){}void SButton::buttonClicked (int button, int clickCount){}void SButton::button_cb_o (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* over */}void SButton::button_cb_p (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* pressed */	SButton *btn = (SButton *) hndl->user_data;	if ((btn->bstate == 0) &&	    (event->mouse->buttons == event->mouse->b)) {		btn->bstate |= event->mouse->b;		btn->buttonPressed(event->mouse->b);		btn->frameSetStyle((btn->frameStyle & SFrame::MShape) | SFrame::Sunken);		btn->draw();	}}void SButton::button_cb_c (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* clicked */}void SButton::button_cb_r (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* released */	SButton *btn = (SButton *) hndl->user_data;	if ((btn->bstate != 0) &&	    (btn->bstate == event->mouse->b)) {		btn->bstate = 0;		btn->buttonReleased(event->mouse->b);		btn->frameSetStyle((btn->frameStyle & SFrame::MShape) | SFrame::Raised);		btn->draw();	}}void SButton::button_cb_hr (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* mouse button released, but the prev. press was not on us */}void SButton::button_cb_ho (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* on over, but mouse button is still pressed */	SButton *btn = (SButton *) hndl->user_data;	if (!(btn->frameStyle & SFrame::Sunken)) {		if (btn->bstate != 0) {			btn->frameSetStyle((btn->frameStyle & SFrame::MShape) | SFrame::Sunken);			btn->draw();		}	}}void SButton::button_cb_oh (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* not on over, but was on over */	SButton *btn = (SButton *) hndl->user_data;	if (!(btn->frameStyle & SFrame::Raised)) {		btn->frameSetStyle((btn->frameStyle & SFrame::MShape) | SFrame::Raised);		btn->draw();	}}void SButton::button_cb_hoh (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* not on over, but was on over. and button is still pressed */	SButton *btn = (SButton *) hndl->user_data;	if (!(btn->frameStyle & SFrame::Raised)) {		btn->frameSetStyle((btn->frameStyle & SFrame::MShape) | SFrame::Raised);		btn->draw();	}}void SButton::button_cb_rh (s_window_t *window, s_event_t *event, s_handler_t *hndl){ /* mouse button released outside, but the prev. press was on us */	SButton *btn = (SButton *) hndl->user_data;	if (btn->bstate == event->mouse->b) {		btn->bstate = 0;	}}SButton::SButton (SObject *parent, int style) : SFrame(parent, style | SFrame::Raised){	buttonHandler = new SHandler(this, MOUSE_HANDLER);	buttonHandler->handlerHndl->mouse.button = ~MOUSE_NONEBUTTON;	buttonHandler->handlerHndl->mouse.o = button_cb_o;	buttonHandler->handlerHndl->mouse.p = button_cb_p;	buttonHandler->handlerHndl->mouse.c = button_cb_c;	buttonHandler->handlerHndl->mouse.r = button_cb_r;	buttonHandler->handlerHndl->mouse.hr = button_cb_hr;	buttonHandler->handlerHndl->mouse.rh = button_cb_rh;	buttonHandler->handlerHndl->mouse.ho = button_cb_ho;	buttonHandler->handlerHndl->mouse.oh = button_cb_oh;	buttonHandler->handlerHndl->mouse.hoh = button_cb_hoh;		buttonHandler->handlerHndl->user_data = (void *) this;}SButton::~SButton (void){	delete buttonHandler;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -