ucgui界面设计演示样例2
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN8
开发环境:MDK4.72
ucgui版本号:3.90
mcu: stm32f103VE
说明:
本程序基于ucgui对话框机制设计了一个界面,并用6个实体按键对界面进行控制,并添加了进度条显示
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamRoOTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />
源代码:
gui_match.h
/*********************************************************************
* 对码绑定界面模块头文件
* (c)copyright 2014,jdh
* All Right Reserved
*新建时间:2014/10/24 by jdh
**********************************************************************/ #ifndef _GUI_MATCH_H_
#define _GUI_MATCH_H_ /*********************************************************************
* 头文件
**********************************************************************/ #include "world.h" /*********************************************************************
* 宏定义
**********************************************************************/ /*********************************************************************
* 工作间隔
*单位:ms
**********************************************************************/ #define INTERVAL_GUI_MATCH 100 /*********************************************************************
* 进度条显示时间
*单位:ms
**********************************************************************/ #define TIME_PROGBAR_GUI_MATCH 3000 /*********************************************************************
* 函数
**********************************************************************/ /*********************************************************************
* 模块加载
**********************************************************************/ void gui_match_load(void); /*********************************************************************
* 模块执行
**********************************************************************/ void gui_match_run(void); /*********************************************************************
* 设置显示状态
*參数:enable:0:关闭显示,1:打开显示
**********************************************************************/ void gui_match_show(uint8_t enable); /*********************************************************************
* 得到当前的显示状态
*返回:0:关闭显示,1:打开显示
**********************************************************************/ uint8_t gui_match_get_show(void); /*********************************************************************
* 得到绑定的脚镣id
*返回:0:未绑定,其它:脚镣id
**********************************************************************/ uint16_t gui_match_get_fetter_id_bind(void); #endif
gui_match.c
/*********************************************************************
* 对码绑定界面模块主文件
* (c)copyright 2014,jdh
* All Right Reserved
*新建时间:2014/10/24 by jdh
*改动时间:2014/10/29 by jdh
**********************************************************************/ /*********************************************************************
* 头文件
**********************************************************************/ #include "gui_match.h"
#include "cc1100.h"
#include "gui_main.h" /*********************************************************************
* 宏定义
**********************************************************************/ #define ID_FRAMEWIN (GUI_ID_USER + 0x10)
#define ID_BUTTON_OK (GUI_ID_USER + 0x11)
#define ID_BUTTON_CANCEL (GUI_ID_USER + 0x12)
#define ID_BUTTON_UP (GUI_ID_USER + 0x13)
#define ID_BUTTON_DOWN (GUI_ID_USER + 0x14)
#define ID_BUTTON_LEFT (GUI_ID_USER + 0x15)
#define ID_BUTTON_RIGHT (GUI_ID_USER + 0x16)
#define ID_TEXT_MATCH (GUI_ID_USER + 0x17)
#define ID_TEXT_ID (GUI_ID_USER + 0x18)
#define ID_TEXT_PROGBAR (GUI_ID_USER + 0x19)
#define ID_LISTBOX (GUI_ID_USER + 0x1A)
#define ID_PROGBAR (GUI_ID_USER + 0x1B) /*********************************************************************
* 列表框存储的数据数量
**********************************************************************/ #define LIST_LEN 20 /*********************************************************************
* 数据结构
**********************************************************************/ /*********************************************************************
* 按键状态
**********************************************************************/ struct _Key_State
{
uint8_t ok;
uint8_t cancel;
uint8_t up;
uint8_t down;
uint8_t left;
uint8_t right;
}; /*********************************************************************
* 列表框缓存
**********************************************************************/ struct _List
{
uint8_t len;
uint16_t buf[LIST_LEN];
}; /*********************************************************************
* 静态变量
**********************************************************************/ /*********************************************************************
* 界面句柄
**********************************************************************/ static WM_HWIN Handle_Gui; /*********************************************************************
* 资源表
**********************************************************************/ static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
{ FRAMEWIN_CreateIndirect, "Frame3", ID_FRAMEWIN, 0, 0, 240, 320, 0, 0x0},
{ BUTTON_CreateIndirect, "OK", ID_BUTTON_OK, 5, 255, 40, 20, 0, 0x0},
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_DOWN, 95, 280, 40, 20, 0, 0x0},
{ BUTTON_CreateIndirect, "UP", ID_BUTTON_UP, 95, 255, 40, 20, 0, 0x0},
{ BUTTON_CreateIndirect, "CANCEL", ID_BUTTON_CANCEL, 185, 255, 40, 20, 0, 0x0},
{ BUTTON_CreateIndirect, "RIGHT", ID_BUTTON_RIGHT, 140, 270, 40, 20, 0, 0x0},
{ BUTTON_CreateIndirect, "LEFT", ID_BUTTON_LEFT, 50, 270, 40, 20, 0, 0x0},
{ TEXT_CreateIndirect, "Match", ID_TEXT_MATCH, 140, 15, 80, 20, 0, 0x0},
{ TEXT_CreateIndirect, "ID", ID_TEXT_ID, 140, 40, 80, 20, 0, 0x0},
{ TEXT_CreateIndirect, "", ID_TEXT_PROGBAR, 140, 65, 80, 20, 0, 0x0},
{ LISTBOX_CreateIndirect, "Listbox", ID_LISTBOX, 5, 10, 120, 220, 0, 0x0},
{ PROGBAR_CreateIndirect, "Progbar", ID_PROGBAR, 140, 85, 80, 20, 0, 0x0},
// USER START (Optionally insert additional widgets)
// USER END
}; /*********************************************************************
* 上次工作时间
**********************************************************************/ static struct _Time Time_Last =
{
.s = 0,
.ms = 0,
.us = 0
}; /*********************************************************************
* 进度条開始的时间
**********************************************************************/ static struct _Time Time_Progbar =
{
.s = 0,
.ms = 0,
.us = 0
}; /*********************************************************************
* 接收CC1100的时间
**********************************************************************/ static struct _Time Time_Recv_CC1100 =
{
.s = 0,
.ms = 0,
.us = 0
}; /*********************************************************************
* 按键状态
**********************************************************************/ static struct _Key_State Key_State =
{
.ok = 0,
.cancel = 0,
.up = 0,
.down = 0,
.left = 0,
.right = 0
}; /*********************************************************************
* 当前显示状态
*0:未显示,1显示
**********************************************************************/ static uint8_t State_Show = 0; /*********************************************************************
* 进度条动画開始标志
*0:终止,1:扫描,2:绑定
**********************************************************************/ static uint8_t Flag_Progbar = 0; /*********************************************************************
* 列表框存储器
**********************************************************************/ static struct _List List =
{
.len = 0
}; /*********************************************************************
* 已绑定脚镣ID
*0:未绑定,其它:ID
**********************************************************************/ static uint16_t Fetter_Id_Bind = 0; /*********************************************************************
* 静态函数
**********************************************************************/ /*********************************************************************
* 回调函数
**********************************************************************/ static void _cbDialog(WM_MESSAGE * pMsg); /*********************************************************************
* 定时工作
**********************************************************************/ static void slot_tick(void); /*********************************************************************
* 按键处理
**********************************************************************/ static void deal_key(void); /*********************************************************************
* 进度条动画
*參数:percent:百分比
**********************************************************************/ static void progbar_show(uint8_t percent); /*********************************************************************
* 发送125k绑定信号
**********************************************************************/ static void emit_125k_bind(void); /*********************************************************************
* 处理cc1100接收数据
*參数:task:0:扫描,1:绑定
**********************************************************************/ static void deal_cc1100(uint8_t task); /*********************************************************************
* 产生激发数据
*參数:cmd:功能码
* data:产生的2字节激发数据
**********************************************************************/ static void generate_exciter_data(uint8_t cmd,uint8_t *data); /*********************************************************************
* 函数
**********************************************************************/ /*********************************************************************
* 模块加载
**********************************************************************/ void gui_match_load(void)
{
//新建界面
Handle_Gui = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
_cbDialog, WM_HBKWIN, 0, 0);
gui_match_show(OFF);
} /*********************************************************************
* 模块执行
**********************************************************************/ void gui_match_run(void)
{
struct _Time time; //推断当前是否显示
if (State_Show == 0)
{
return;
} //推断当前是否处于扫描状态
if (Flag_Progbar == 1)
{
deal_cc1100(0);
}
else
{
//推断当前是否处于绑定状态
if (Flag_Progbar == 2)
{
deal_cc1100(1);
}
} //得到当前时间
get_time(&time); //推断是否到工作时间
if (sub_time(time,Time_Last) >= INTERVAL_GUI_MATCH * 1000)
{
//更新时间
Time_Last = time; //定时工作
slot_tick();
}
} /*********************************************************************
* 设置显示状态
*參数:enable:0:关闭显示,1:打开显示
**********************************************************************/ void gui_match_show(uint8_t enable)
{
WM_HWIN hItem; State_Show = enable;
if (enable)
{
//设置列表框为焦点
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
WM_SetFocus(hItem); WM_ShowWindow(Handle_Gui);
}
else
{
WM_HideWindow(Handle_Gui);
}
} /*********************************************************************
* 得到当前的显示状态
*返回:0:关闭显示,1:打开显示
**********************************************************************/ uint8_t gui_match_get_show(void)
{
return State_Show;
} /*********************************************************************
* 得到绑定的脚镣id
*返回:0:未绑定,其它:脚镣id
**********************************************************************/ uint16_t gui_match_get_fetter_id_bind(void)
{
//return Fetter_Id_Bind;
return 0x100;
} /*********************************************************************
* 定时工作
**********************************************************************/ static void slot_tick(void)
{
uint32_t ms = 0;
uint8_t percent = 0;
WM_HWIN hItem; //按键处理
deal_key(); //推断当前进度条是否须要显示
if (Flag_Progbar)
{
//推断是否是扫描
if (Flag_Progbar == 1)
{
//推断激发信号是否结束
if (inf_exciter_get_busy() == 0)
{
//关闭激发模块电源
inf_exciter_power(OFF);
}
} //推断是否到工作时间
ms = sub_time(Time_Last,Time_Progbar) / 1000;
if (ms < TIME_PROGBAR_GUI_MATCH)
{
percent = ms * 100 / TIME_PROGBAR_GUI_MATCH;
progbar_show(percent);
}
else
{
//结束进度条动画
Flag_Progbar = 0;
progbar_show(100); //文本:结束
hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"结束");
}
}
} /*********************************************************************
* 按键处理
**********************************************************************/ static void deal_key(void)
{
WM_HWIN hItem;
uint8_t index = 0;
uint16_t id = 0;
uint8_t data[3] = {0}; //推断下键是否按下
if (inf_key_detect_hold(KEY_DOWN))
{
if (Key_State.down == 0)
{
Key_State.down = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_DOWN);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED); //发送按键信号
GUI_SendKeyMsg(GUI_KEY_DOWN, 1);
}
}
else
{
if (Key_State.down == 1)
{
Key_State.down = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_DOWN);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
}
} //推断上键是否按下
if (inf_key_detect_hold(KEY_UP))
{
if (Key_State.up == 0)
{
Key_State.up = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_UP);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED); //发送按键信号
GUI_SendKeyMsg(GUI_KEY_UP, 1);
}
}
else
{
if (Key_State.up == 1)
{
Key_State.up = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_UP);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
}
} //推断扫描键是否按下
if (inf_key_detect_hold(KEY_OK) && (Flag_Progbar == 0))
{
if (Key_State.ok == 0)
{
Key_State.ok = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_OK);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED); //文本:開始扫描
hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"開始扫描"); //開始扫描
Flag_Progbar = 1;
//保存当前时间
get_time(&Time_Progbar); //打开125k电源
inf_exciter_power(ON);
//发送125k绑定信号
emit_125k_bind(); //清空列表框
List.len = 0;
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
listbox_clear(hItem);
}
}
else
{
if (Key_State.ok == 1)
{
Key_State.ok = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_OK);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
}
} //推断清除键是否按下
if (inf_key_detect_hold(KEY_LEFT))
{
if (Key_State.left == 0)
{
Key_State.left = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_LEFT);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED); //清空列表框
List.len = 0;
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
listbox_clear(hItem);
}
}
else
{
if (Key_State.left == 1)
{
Key_State.left = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_LEFT);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
}
} //推断绑定键是否按下
if (inf_key_detect_hold(KEY_RIGHT) && (Flag_Progbar == 0))
{
if (Key_State.right == 0)
{
Key_State.right = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_RIGHT);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED); //推断当前是否有项
if (List.len == 0)
{
return;
}
//得到脚镣id
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
index = LISTBOX_GetSel(hItem);
if (index >= List.len)
{
//清空列表框
List.len = 0;
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
listbox_clear(hItem);
return;
}
id = List.buf[index];
//数据
data[0] = 0;
data[1] = 0;
data[2] = 0;
//等待能够发送
while (cc1100_judge_tx() == 0);
//发送对码绑定帧
cc1100_tx(CMD_RF_BIND,id,data); //開始绑定
Flag_Progbar = 2;
//保存当前时间
get_time(&Time_Progbar); //更新绑定的脚镣ID
Fetter_Id_Bind = 0;
//更新文本
hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_MATCH);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"未绑定脚镣"); hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_ID);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"ID:0"); //更新文本
hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"正在绑定");
}
}
else
{
if (Key_State.right == 1)
{
Key_State.right = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_RIGHT);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
}
} //推断返回键是否按下
if (inf_key_detect_hold(KEY_CANCEL) && (Flag_Progbar == 0))
{
if (Key_State.cancel== 0)
{
Key_State.cancel = 1; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_CANCEL);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
}
}
else
{
if (Key_State.cancel == 1)
{
Key_State.cancel = 0; //按键状态改变
hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_CANCEL);
BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS); //返回主界面
gui_match_show(OFF);
gui_main_show(ON);
}
}
} /*********************************************************************
* 进度条动画
*參数:percent:百分比
**********************************************************************/ static void progbar_show(uint8_t percent)
{
WM_HWIN hItem; //进度条显示
hItem = WM_GetDialogItem(Handle_Gui, ID_PROGBAR);
PROGBAR_SetValue(hItem,percent);
} /*********************************************************************
* 发送125k绑定信号
**********************************************************************/ static void emit_125k_bind(void)
{
uint8_t data[2] = {0}; //生成激活数据
generate_exciter_data(CMD_125K_BIND,data);
//生成新的激发序列
inf_exciter_generate_frame(data,2); //等待空暇
while (inf_exciter_get_busy());
//发送
inf_exciter_start();
} /*********************************************************************
* 处理cc1100接收数据
*參数:task:0:扫描,1:绑定
**********************************************************************/ static void deal_cc1100(uint8_t task)
{
struct _Rx_Buf_CC1100 buf;
WM_HWIN hItem;
char str[20] = {0}; buf = cc1100_get_rx_buf();
//推断是否是最新帧
if (compare_time(buf.time,Time_Recv_CC1100) != 2)
{
return;
} //保存时间
Time_Recv_CC1100 = buf.time; if (task == 0)
{
//推断功能码是否是上传脚镣ID帧
if (buf.cmd != CMD_RF_UP_FETTER_ID)
{
return;
} //推断是否还有存储空间
if (List.len >= LIST_LEN)
{
return;
} //更新数据
List.buf[List.len++] = buf.src_id;
sprintf(str,"%d",List.buf[List.len - 1]);
//更新列表框
hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
LISTBOX_AddString(hItem, str); return;
} if (task == 1)
{
//推断功能码是否是确认对码绑定
if (buf.cmd != CMD_RF_ACK_BIND)
{
return;
} //更新绑定的脚镣ID
Fetter_Id_Bind = buf.src_id;
//更新文本
hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_MATCH);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"已绑定脚镣"); hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_ID);
TEXT_SetFont(hItem, &GUI_FontHZ12);
sprintf(str,"ID:0x%x",Fetter_Id_Bind);
TEXT_SetText(hItem,str); return;
}
} /*********************************************************************
* 产生激发数据
*參数:cmd:功能码
* data:产生的2字节激发数据
**********************************************************************/ static void generate_exciter_data(uint8_t cmd,uint8_t *data)
{
uint8_t temp = 0;
uint8_t check = 0; temp = cmd << 6;
temp |= LOCAL_ID >> 4;
data[0] = temp;
temp = LOCAL_ID << 4; check = checksum4(data,2);
temp |= check;
data[1] = temp;
} /*********************************************************************
* 回调函数
**********************************************************************/ static void _cbDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hItem; switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
{
//初始化窗口
//添加小按键
FRAMEWIN_AddCloseButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 0);
FRAMEWIN_AddMaxButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 1);
FRAMEWIN_AddMinButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 2);
FRAMEWIN_SetFont(pMsg->hWin, &GUI_FontHZ12);
FRAMEWIN_SetText(pMsg->hWin,"对码绑定"); //初始化列表框
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX);
// //设置内容
// LISTBOX_SetFont(hItem, &GUI_FontHZ12);
// LISTBOX_AddString(hItem, "0x10");
// LISTBOX_AddString(hItem, "0x11");
// LISTBOX_AddString(hItem, "0x12");
// LISTBOX_AddString(hItem, "0x13");
// LISTBOX_AddString(hItem, "0x14");
// List.buf[0] = 0x10;
// List.buf[1] = 0x11;
// List.buf[2] = 0x12;
// List.buf[3] = 0x13;
// List.buf[4] = 0x14;
// List.len = 5; //设置为焦点
WM_SetFocus(hItem);
SCROLLBAR_CreateAttached(hItem, SCROLLBAR_CF_VERTICAL); //初始化按键
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"扫描"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"返回"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_UP);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"上"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_DOWN);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"下"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_LEFT);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"清除"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_RIGHT);
BUTTON_SetFont(hItem, &GUI_FontHZ12);
BUTTON_SetText(hItem,"绑定"); //初始化文本
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_MATCH);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"未绑定脚镣"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_ID);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"ID:0"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_PROGBAR);
TEXT_SetFont(hItem, &GUI_FontHZ12);
TEXT_SetText(hItem,"结束"); //初始化进度条
hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR);
PROGBAR_SetBarColor(hItem,0,GUI_RED);
PROGBAR_SetBarColor(hItem,1,GUI_GREEN); break;
}
default:
{
WM_DefaultProc(pMsg);
break;
}
}
}
ucgui界面设计演示样例2的更多相关文章
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- 百度地图 Android SDK - 检索功能使用的简单演示样例
百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...
- SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)
做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...
- 虚幻4Matinee功能 基本概念及简单演示样例(Sequence编辑器)
虚幻4提供的Matinee功能十分强大,能够用来制作动画.录制视频. 它的核心想法是在Matinee编辑器内提供一套自己的时间坐标系,在这个相对时间内通过调节actor的属性来改变actor的状态,进 ...
- 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门演示样例
一. 工作区域具体解释 1. Scence视图 (场景设计面板) scence视图简单介绍 : 展示创建的游戏对象, 能够对全部的游戏对象进行 移动, 操作 和 放置; -- 演示样例 : 创建一个球 ...
- java 覆盖hashCode()深入探讨 代码演示样例
java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...
- java并行调度框架封装及演示样例
參考资料: 阿里巴巴开源项目 CobarClient 源代码实现. 分享作者:闫建忠 分享时间:2014年5月7日 ---------------------------------------- ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例
第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...
随机推荐
- menu JPopupMenu JTabbedPane
菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (MenuBar).菜单(Menu)和菜单项(Men ...
- numpy hstack()
numpy.hstack(tup)[source] Stack arrays in sequence horizontally (column wise). Take a sequence of ar ...
- shit layui & bugs
shit layui & bugs use is not useful at all! http://www.layui.com/demo/form.html layui.use([" ...
- Java中NIO、BIO、AIO相关概念及应用场景
1.同步阻塞IO(JAVA BIO):同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通 ...
- 【angularjs学习】简单的语法
<div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country ...
- LA 2218 半平面交
题目大意:n名选手参加铁人三项赛,比赛按照选手在三个赛段中所用的总时间排定名次.已知每名选手在三个项目中的速度Ui.Vi.Wi.问对于选手i,能否通过适当的安排三个赛段的长度(但每个赛段的长度都不能 ...
- 陌上花开(bzoj 3262)
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- 洛谷P2483 Bzoj1975 [SDOI2010]魔法猪学院
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
- Maven实战:Pom.xml详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的u ...
- 洛谷——P1025 数的划分
P1025 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有 ...