📄 sliderwidgetdemo_old.c
字号:
/*===========================================================================
FILE: SliderWidgetDemo.c
===========================================================================*/
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEForm.h"
#include "AEERootForm.h"
//#include "AEEDialog.h"
#include "AEERootForm.h"
#include "AEEWProperties.h"
#include "AEEXYContainer.h"
#include "AEEPropContainer.h"
#include "AEEStaticWidget.h"
#include "AEEStdLib.h"
#include "AEESliderWidget.h"
#include "SliderWidgetDemo.bid" // class ID文件
#include "SliderWidgetDemo.brh" // 资源文件
#define SLIDERWIDGETDEMO_RES_FILE "SliderWidgetDemo.bar"
//define applet structure
typedef struct _sliderDemo_1App {
AEEApplet a;
IRootForm* rootForm;
IForm* mainForm;
} sliderDemo_1App;
// app form structure
typedef struct sliderDemo_1AppForm sliderDemo_1AppForm;
struct sliderDemo_1AppForm {
IShell* piShell;
IRootForm* rootForm;
IForm* mainForm;
HandlerDesc mainFormHandler;
IXYContainer* mainContainer;
IWidget* numberStatic;
IWidget* sliderDemo_1;
IWidget* sliderDemo_2;
IWidget* sliderDemo_3;
};
/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean sliderDemo_1_HandleEvent (IApplet * pi, AEEEvent eCode,uint16 wParam, uint32 dwParam);
static int sliderDemo_1_InitAppData (sliderDemo_1App* pMe);
static void sliderDemo_1_FreeAppData (sliderDemo_1App* pMe);
static int sliderDemo_1AppForm_New (IForm** ppo, IShell *piShell, IRootForm *pRootForm);
static int sliderDemo_1AppForm_PopulateMainContainer (sliderDemo_1AppForm* pMe);
static boolean sliderDemo_1AppForm_HandleEvent (void *po, AEEEvent evt, uint16 wParam, uint32 dwParam);
static void sliderDemo_1AppForm_Delete (sliderDemo_1AppForm* pMe);
/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */
//=====================================================================================
//
//=====================================================================================
void sliderDemo_1AppForm_Delete(sliderDemo_1AppForm* pMe)
{
if(pMe->mainForm)
IFORM_Release(pMe->mainForm);
if(pMe->mainContainer)
IXYCONTAINER_Release(pMe->mainContainer);
if(pMe->numberStatic)
IWIDGET_Release(pMe->numberStatic);
if(pMe)
FREE(pMe);
}
//=====================================================================================
//
//=====================================================================================
static boolean sliderDemo_1AppForm_HandleEvent(void *po, AEEEvent evt, uint16 wParam, uint32 dwParam)
{
sliderDemo_1AppForm* pMe = (sliderDemo_1AppForm*) po;
if(evt== EVT_KEY) {
if (wParam == AVK_STAR) {
IValueModel* zjz_ValueModel;
uint16 nn;
IWIDGET_GetModel(pMe->sliderDemo_1, AEEIID_VALUEMODEL, (IModel**)&zjz_ValueModel);
nn = 15;
IVALUEMODEL_SetValue(zjz_ValueModel, (void*)nn, 10, NULL);
nn = (int)IVALUEMODEL_GetValue(zjz_ValueModel,NULL);//&nPos2);
return TRUE;
}
}
if ((wParam == AVK_UP) || (wParam == AVK_DOWN)){
int result;
int focusSlider;
IWidget* containerWidget = NULL;
//set WID_FORM to the container
result = IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, (void**)&containerWidget);
if(result ==0) {
IFORM_SetWidget(pMe->mainForm, WID_FORM, containerWidget);
focusSlider = IWIDGET_MoveFocus(containerWidget, pMe->sliderDemo_1);
IWIDGET_Release(containerWidget);
}
if (focusSlider == 0) {
IValueModel* zjz_ValueModel;
uint16 nn;
IWIDGET_GetModel(pMe->sliderDemo_1, AEEIID_VALUEMODEL, (IModel**)&zjz_ValueModel);
nn = 15;
// IVALUEMODEL_SetValue(zjz_ValueModel, (void*)nn, 10, NULL);
nn = (int)IVALUEMODEL_GetValue(zjz_ValueModel,NULL);//&nPos2);
//nn = SliderWidget_GetPos(pMe->sliderDemo_1);
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_ACTIVE_BGCOLOR,MAKE_RGB(nn*2, nn, 255-nn));
{
IValueModel *pivm = 0;
char ach[12];
AECHAR awch[12];
SNPRINTF(ach, sizeof(ach)-1, "%lu", (uint32)nn);
STRTOWSTR(ach, awch, sizeof(awch));
if(SUCCESS == IWIDGET_GetModel(pMe->numberStatic, AEEIID_VALUEMODEL, (IModel**) &pivm)) {
IVALUEMODEL_SetText(pivm, awch, -1);
IVALUEMODEL_Release(pivm);
}
}
}
return TRUE;
}
//the default form handler is swapped with the sliderDemo_1AppForm handler
// calling this allows the default form handler to handle the event
return HANDLERDESC_Call(&pMe->mainFormHandler, evt, wParam, dwParam);
}
//=====================================================================================
//
//=====================================================================================
int sliderDemo_1AppForm_PopulateMainContainer(sliderDemo_1AppForm* pMe)
{
#define SLIDER_DEMO_MAX_POS_1 100 // Slider #1的最大值 (最小值总为0)
#define SLIDER_DEMO_MAX_POS_2 10 // Slider #2的最大值 (最小值总为0)
#define SLIDER_DEMO_MAX_POS_3 30 // Slider #3的最大值 (最小值总为0)
//#define SLIDER_DEMO_
//#define
int result = 0;
IWidget* containerWidget = NULL;
IPropContainer* propContainer = NULL;
WExtent we;
WidgetProp wp;
WidgetPos wpos;
WExtent zjz_we;
WidgetProp zjz_wp;
WidgetPos zjz_wpos;
// zjz [5/16/2006]
uint16 zjz_uint16;
uint16 nPos = 100,nPos2,nPos3;
IValueModel* zjz_ValueModel = NULL;
// ===
// 创建容器(Container)与控件(widget)的实例
result = ISHELL_CreateInstance(pMe->piShell, AEECLSID_XYCONTAINER, (void**) &pMe->mainContainer); // 创建坐标容器的实例,这个是Container
result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_PROPCONTAINER, (void**) &propContainer); // 创建比例容器(列表容器)的实例,这个是Container
result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_STATICWIDGET, (void**)&pMe->numberStatic); // 创建静态文本的实例,这个是widget
result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_1); // 创建Slider1的实例,这个是widget
result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_2); // 创建Slider2的实例,这个是widget
result += ISHELL_CreateInstance(pMe->piShell, AEECLSID_SLIDERWIDGET, (void**)&pMe->sliderDemo_3); // 创建Slider3的实例,这个是widget
if(result != 0) // 至少有一个实例创建失败
return EFAILED;
// 设置各个Slider的最大值 (宏PROP_SLIDER_MAXPOS)
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_1);
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_2);
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_SLIDER_MAXPOS,SLIDER_DEMO_MAX_POS_3);
// 设置最大值的另一种方式 IWIDGET_SetSliderMaxPos(pMe->sliderDemo_1,最大值);
// 注:Slider的滑杆边框由Border继承而来,针对Border的操作如宽度颜色等,一般都可用于Slider的滑杆
// 设置Slider滑杆的边框宽度 (宏PROP_BORDERWIDTH)
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERWIDTH,2);
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_BORDERWIDTH,1);
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_BORDERWIDTH,3);
// 设置滑杆边框宽度的另一种方式 IWIDGET_SetBorderWidth(pMe->sliderDemo_1, 宽度);
// 设置Slider手柄的颜色 (宏PROP_SLIDER_HANDLEBORDERCOLOR)
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB( 0, 255, 0));
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(255, 0, 0));
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB( 0, 0, 255));
// 设置手柄颜色的另一种方式 IWIDGET_SetSliderHandleBorderColor(pMe->sliderDemo_1,MAKE_RGB(红, 绿, 蓝));
// 设置Slider滑杆边框的颜色
// PROP_INACTIVE_BORDERCOLOR: 当Slider处于非活动状态时的色彩
// PROP_ACTIVE_BORDERCOLOR: 当Slider处于活动状态时的色彩
// PROP_BORDERCOLOR: 直接指定所有状态下的边框颜色(各状态颜色一起指定为同一色)
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_INACTIVE_BORDERCOLOR,MAKE_RGB(0, 0,255));
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_ACTIVE_BORDERCOLOR,MAKE_RGB(0, 255, 50));
////....////....////....////....////
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERCOLOR,MAKE_RGB(0, 0,255));
IWIDGET_SetProperty(pMe->sliderDemo_2,PROP_BORDERCOLOR,MAKE_RGB(0, 255, 50));
IWIDGET_SetProperty(pMe->sliderDemo_3,PROP_BORDERCOLOR,MAKE_RGB(0, 255, 50));
////....////....////....////....////
// 设置Slider滑杆杆体的颜色(滑杆底色)
// PROP_BGCOLOR: 指定所有状态的颜色为同一色
// PROP_ACTIVE_BGCOLOR 指定活动状态时的底色
// PROP_INACTIVE_BGCOLOR 指定非活动状态时的底色
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BGCOLOR,MAKE_RGB(255,0 , 255));
//IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERCOLOR,MAKE_RGB(0, 0, 0));
//IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BGCOLOR,MAKE_RGB(255,0 , 255));
#define PROP_BGCOLOR 0x130 // Set (only) all bgcolors to same value
#define PROP_ACTIVE_BGCOLOR 0x131 // Get/Set bgcolor when widget is active
#define PROP_INACTIVE_BGCOLOR 0x132 // Get/Set bgcolor when widget is inactive
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_LAYOUTSTYLE,LAYOUT_VERT);
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_BORDERSTYLE,BORDERSTYLE_BEVELED);
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
IWIDGET_SetProperty(pMe->sliderDemo_1,PROP_SLIDER_HANDLEBORDERCOLOR,MAKE_RGB(0, 200, 0));
// {
// IModel* zjzViewModel = NULL;
// IWIDGET_GetViewModel(pMe->sliderDemo_1, &zjzViewModel);
// IMODEL_AddListenerEx(zjzViewModel, &pMe->zjzSliderListener, (PFNLISTENER)SliderWidget_ViewModelHandler, pMe);
// IMODEL_Release(zjzViewModel);
// }
zjz_we.height = 10;
zjz_we.width = 60;
IWIDGET_SetExtent(pMe->sliderDemo_1,&zjz_we);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -