📄 schfunc.c
字号:
else if( control_symbol == CREATE_SECOND_PAGE )//页面控制标志(第二页)
{
GetEditorStr( ed_num, num_buf, SCHEME_ALARM_REPEAT_NUM_LEN );
if( ( num_buf[0] == 0 ) || ( strlen(num_buf) > ( SCHEME_ALARM_REPEAT_NUM_LEN - 1 ) ) )
msgbox = MessageBox( mainwin, "提醒次数不能为空或提醒次数的位数不能多于4位!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
else{
GetEditorStr( ed_content, content_buf, SCHEME_CONTENT_LEN );
scheme_stru->alarm_repeat_num = num_buf;
scheme_stru->alarm_type = alarm_type;
scheme_stru->content = content_buf;
if( TransCreateScheme( &id, scheme_stru, 0 ) != SCHEME_OK )
return SCHEME_ERROR;
DynAlarm( id, ADD_TIMER );
goto endrv;
}
}
}
}
if( Msg.lparam == bt_cancel ) //取消
quit = TRUE;
break;
case WM_QUIT:
quit = TRUE;
break;
default:
break;
}
DefWindowProc( Msg.message, Msg.lparam, Msg.data, Msg.wparam );
}
endrv:
Lfree( conversion_time );
Lfree( scheme_stru );
DestroyWindow( mainwin );
return rv;
}
/***********************************************************************************************/
//检查当前记录
STATUS CheckSchemeValidity( U16 *select_no, U8 reserved )
{
SCHEME_STRU *scheme_stru;
U16 i;
// BYTE *record;
scheme_stru = TransReadScheme( *select_no, 0 );
// scheme_stru = TransReadScheme( *select_no, &record );
if( scheme_stru == NULL ) //此记录已被删除
{
Lfree( global_scheme_list->head[*select_no].data );
for( i = *select_no; i < ( global_scheme_list->num - 1 - *select_no ); i++ )
memcpy( &global_scheme_list->head[i], &global_scheme_list->head[i+1], sizeof(RECORDDATA) );
global_scheme_list->num--;
if( *select_no == global_scheme_list->num ) //删除的是最后一条记录,显示前一条记录
*select_no = global_scheme_list->num - 1;
return SCHEME_DEL;
}
else if( *(scheme_stru->type) == SCHEME_MATURITY ) //此记录已到期
{
Lfree( scheme_stru );
// Lfree( record );
return SCHEME_MATU;
}else{
Lfree( scheme_stru );
// Lfree( record );
return SCHEME_OK;
}
}
/***********************************************************************************************/
//转换为可显示的时间
char* SwitchToDispTime( char *time )
{
char *disp_time, *temp_disp_time, *temp_time;
if( ( disp_time = (char *)SysLmalloc(SCHEME_DISP_TIME_LEN) ) == NULL )
return NULL;
temp_disp_time = disp_time;
temp_time = time;;
memcpy( temp_disp_time, temp_time, 4 ); //年
disp_time[4] = '-';
temp_disp_time += 5;
temp_time += 4;
memcpy( temp_disp_time, temp_time, 2 ); //月
disp_time[7] = '-';
temp_disp_time += 3;
temp_time += 2;
memcpy( temp_disp_time, temp_time, 2 ); //日
disp_time[10] = ' ';
temp_disp_time += 3;
temp_time += 2;
memcpy( temp_disp_time, temp_time, 2 ); //时
disp_time[13] = ':';
temp_disp_time += 3;
temp_time += 2;
memcpy( temp_disp_time, temp_time, 2 ); //分
disp_time[16] = '\0';
return disp_time;
}
/***********************************************************************************************/
//按查询
void SearchScheme( U8 type, U8 reserved )
{
switch( type )
{
case BY_NAME:
SearchByName( 0 );
break;
case BY_TIME:
SearchByTime( 0 );
break;
}
}
/***********************************************************************************************/
//按名称查询
void SearchByName( U8 reserved )
{
static MSG Msg;
U32 pGC;
U8 quit = FALSE;
U32 mainwin, tskbar; //主窗口
U32 check, st1, ed_keystring; //关键字输入区
U32 bt_ok, bt_cancel, keyboard; //功能键
U16 msgbox;
SCHEME_SEARCH_STRU scheme_search_stru;
static char keystring[KEYSTRING_LEN] = {0}, type[2] = {0};
U8 mode = PRECISE_PART_MATCH;
U16 number = 0; //当前列表中记录的数目
static SL_ITEM item[]=
{
SL_UNCHECKED, "精确查找",
SL_UNCHECKED, "模糊查找",
0, NULL
};
pGC = GetGC();
ClearScreen( pGC, WHITE );
memset( (void *)&Msg, 0x0, sizeof(MSG) );
mainwin = CreateWindow(WNDCLASS_WIN, "电子秘书", WS_OVERLAPPEDWINDOW|WS_USERBOX|WS_CLOSEBOX, 0,0,LCD_WIDTH-1,LCD_HEIGHT-1,0,0,NULL);
//任务栏
tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
//关键字输入区
check = CreateWindow(WNDCLASS_SELECT, NULL, WS_CHILD|SLS_RADIOBOX|SLS_ENABLE, LCD_WIDTH/2-40,22,80,40,mainwin,0, item);//|SLS_FRAME
st1 = CreateWindow(WNDCLASS_STATIC, "请输入关键字:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,64,70,20,mainwin,0,NULL);
ed_keystring = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, LCD_WIDTH/10,86,LCD_WIDTH*4/5,20,mainwin,9,NULL);
//功能键
bt_ok = CreateWindow(WNDCLASS_BUTTON, "确定", WS_CHILD|BS_REGULAR, LCD_WIDTH/2-48,108,40,20,mainwin,0,NULL);
bt_cancel = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD|BS_REGULAR, LCD_WIDTH/2+8,108,40,20,mainwin,0,NULL);
keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,mainwin,0,NULL);
while( !quit )
{
ASIXGetMessage( &Msg, NULL, 0, 0 );
switch( Msg.message )
{
case WM_SELECTBOX:
if( Msg.lparam == check )
mode = (U8)Msg.wparam;
break;
case WM_COMMAND:
if( Msg.lparam == bt_ok ) //确定
{
GetEditorStr( ed_keystring, keystring, KEYSTRING_LEN );
if( keystring[0] == 0 )
{
msgbox = MessageBox( mainwin, "请先输入关键字!", "友情提醒", MB_OK|MB_ICONEXCLAMATION);
}else{
FreeDBList( &global_scheme_list, &number );
//填充搜索结构
scheme_search_stru.keystring = keystring;
scheme_search_stru.field = SCHEME_NAME;
scheme_search_stru.mode = mode;
type[0] = SCHEME_ALL;//所有的提醒
scheme_search_stru.type = type;
global_scheme_list = TransSearchScheme( &scheme_search_stru, 0 ); //查找提醒
quit = TRUE;
}
}
if( Msg.lparam == bt_cancel ) //取消
quit = TRUE;
break;
case WM_QUIT:
quit = TRUE;
break;
}
DefWindowProc( Msg.message, Msg.lparam, Msg.data, Msg.wparam );
}
DestroyWindow( mainwin );
}
/***********************************************************************************************/
//按时间查询
void SearchByTime( U8 reserved )
{
static MSG Msg;
U32 pGC;
U8 quit = FALSE;
U32 mainwin, tskbar; //主窗口
U32 check; //关键字输入区
U32 bt_ok, bt_cancel; //功能键
U16 msgbox;
ASIX_DATE date;
TIME_STRU time, conversion_time;
SCHEME_SEARCH_STRU scheme_search_stru;
static char keystring[KEYSTRING_LEN] = {0}, type[2] = {0};
U16 number = 0; //当前列表中记录的数目
static SL_ITEM item[]=
{
SL_UNCHECKED, "一天内",
SL_UNCHECKED, "一周内",
SL_UNCHECKED, "一月内",
SL_UNCHECKED, "一年内",
0, NULL
};
pGC = GetGC();
ClearScreen( pGC, WHITE);
memset( (void *)&Msg, 0x0, sizeof(MSG) );
mainwin = CreateWindow(WNDCLASS_WIN, "电子秘书", WS_OVERLAPPEDWINDOW|WS_USERBOX|WS_CLOSEBOX, 0,0,LCD_WIDTH-1,LCD_HEIGHT-1,0,0,NULL);
//任务栏
tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
//关键字输入区
check = CreateWindow(WNDCLASS_SELECT, "请选择时间查找范围:", WS_CHILD|SLS_RADIOBOX|SLS_ENABLE|SLS_FRAME, LCD_WIDTH/10,22,LCD_WIDTH*0.8,170,mainwin,0, item);
//功能键
bt_ok = CreateWindow(WNDCLASS_BUTTON, "确定", WS_CHILD|BS_REGULAR, LCD_WIDTH/2-48,196,40,20,mainwin,0,NULL);
bt_cancel = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD|BS_REGULAR, LCD_WIDTH/2+8,196,40,20,mainwin,0,NULL);
while( !quit )
{
ASIXGetMessage( &Msg, NULL, 0, 0 );
switch( Msg.message )
{
case WM_SELECTBOX:
if( Msg.lparam == check )
keystring[0] = Msg.wparam + 48;
break;
case WM_COMMAND:
if( Msg.lparam == bt_ok ) //确定
{
if( keystring[0] == 0 )
{
msgbox = MessageBox( mainwin, "请先选择查找的时间范围!", "友情提醒", MB_OK|MB_ICONEXCLAMATION);
}
else{
FreeDBList( &global_scheme_list, &number );
GetDate( &date );
time.year = (U32)date.year;
time.month = date.month;
time.day = date.day;
time.hour = time.minute = time.second = 0;
TimetoChar( &time, &conversion_time );
strcat( keystring, (char *)(&conversion_time) ); //获得关键字
keystring[15] = '\0';
//填充搜索结构
scheme_search_stru.keystring = keystring;
scheme_search_stru.field = SCHEME_TIME;
scheme_search_stru.mode = PRECISE_PART_MATCH;
type[0] = SCHEME_ALL;//所有的提醒
scheme_search_stru.type = type;
global_scheme_list = TransSearchScheme( &scheme_search_stru, 0 ); //查找提醒
quit = TRUE;
}
}
if( Msg.lparam == bt_cancel ) //取消
quit = TRUE;
break;
case WM_QUIT:
quit = TRUE;
break;
}
DefWindowProc( Msg.message, Msg.lparam, Msg.data, Msg.wparam );
}
DestroyWindow( mainwin );
}
/***********************************************************************************************/
char* GetAlarmType( char *type )
{
static char *string;
switch( *type )
{
case DO_NOT_ALARM:
string = "不提醒";
break;
case RING_ALARM:
string = "开闹铃";
break;
case WINDOW_ALARM:
string = "提示窗";
break;
}
return string;
}
/***********************************************************************************************/
char* GetAlarmMode( char *mode )
{
static char *string;
switch( *mode )
{
case BY_HOUR:
string ="按时";
break;
case BY_DAY:
string ="按天";
break;
case BY_WEEK:
string ="按周";
break;
case BY_MONTH:
string ="按月";
break;
case BY_YEAR:
string ="按年";
break;
}
return string;
}
/***********************************************************************************************/
FIRSTPAGEICON DrawFirstPage( U32 wndid )
{
U32 st1, st2, st3; //标题栏
FIRSTPAGEICON firstpageicon;
firstpageicon.st = CreateWindow(WNDCLASS_STATIC, NULL, WS_CHILD|SS_TEXT,1,20,LCD_WIDTH-3,108,wndid,0,NULL);
//功能键
st1 = CreateWindow(WNDCLASS_STATIC, "标题:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,20,34,20,firstpageicon.st,0,NULL);
firstpageicon.ed_name = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, LCD_WIDTH/10+38,20,LCD_WIDTH*4/5-38,20,firstpageicon.st,SCHEME_NAME_LEN,NULL);
st2 = CreateWindow(WNDCLASS_STATIC, "时间:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,42,34,20,firstpageicon.st,0,NULL);
// firstpageicon.year_list=CreateWindow(WNDCLASS_LIST, "年", WS_CHILD|LBS_POPUP, 40,42,36,20,firstpageicon.st,0,(void *)list_year);
// firstpageicon.month_list=CreateWindow(WNDCLASS_LIST, "月", WS_CHILD|LBS_POPUP, 78,42,36,20,firstpageicon.st,0,(void *)list_month);
// firstpageicon.day_list=CreateWindow(WNDCLASS_LIST, "日", WS_CHILD|LBS_POPUP, 116,42,36,20,firstpageicon.st,0,(void *)list_day);
// firstpageicon.hour_list=CreateWindow(WNDCLASS_LIST, "时", WS_CHILD|LBS_POPUP, 40,64,36,20,firstpageicon.st,0,(void *)list_hour);
// firstpageicon.minute_list=CreateWindow(WNDCLASS_LIST, "分", WS_CHILD|LBS_POPUP, 78,64,36,20,firstpageicon.st,0,(void *)list_minute);
// st_year = CreateWindow(WNDCLASS_STATIC, "年", WS_CHILD|SS_TEXT, 4,42,34,20,firstpageicon.st,0,NULL);
firstpageicon.year_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP, LCD_WIDTH*9/10-36*2-2,42,36,20,firstpageicon.st,0,(void *)list_year);
// st_month = CreateWindow(WNDCLASS_STATIC, "月", WS_CHILD|SS_TEXT, 4,42,34,20,firstpageicon.st,0,NULL);
firstpageicon.month_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP,LCD_WIDTH*9/10-36,42,36,20,firstpageicon.st,0,(void *)list_month);
// st_day = CreateWindow(WNDCLASS_STATIC, "日", WS_CHILD|SS_TEXT, 4,64,12,20,firstpageicon.st,0,NULL);
firstpageicon.day_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP,LCD_WIDTH*9/10-36*3-2*2,64,36,20,firstpageicon.st,0,(void *)list_day);
// st_hour = CreateWindow(WNDCLASS_STATIC, "时", WS_CHILD|SS_TEXT, 61,64,12,20,firstpageicon.st,0,NULL);
firstpageicon.hour_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP, LCD_WIDTH*9/10-36*2-2,64,36,20,firstpageicon.st,0,(void *)list_hour);
// st_minute = CreateWindow(WNDCLASS_STATIC, "分", WS_CHILD|SS_TEXT, 118,64,12,20,firstpageicon.st,0,NULL);
firstpageicon.minute_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP,LCD_WIDTH*9/10-36,64,36,20,firstpageicon.st,0,(void *)list_minute);
st3 = CreateWindow(WNDCLASS_STATIC, "周期:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,86,34,20,firstpageicon.st,0,NULL);
firstpageicon.period_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP, LCD_WIDTH/10+38,86,LCD_WIDTH*4/5-38,20,firstpageicon.st,0,(void *)list_period);
firstpageicon.bt_down = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, LCD_WIDTH/2-38,108,20,20,firstpageicon.st,0,(void *)zi_down);
firstpageicon.bt_ok = CreateWindow(WNDCLASS_BUTTON, "确", WS_CHILD|BS_REGULAR, LCD_WIDTH/2-10,108,20,20,firstpageicon.st,0,NULL);
firstpageicon.bt_cancel = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, LCD_WIDTH/2+18,108,20,20,firstpageicon.st,0,(void *)zi_cancel);
return firstpageicon;
}
/***********************************************************************************************/
SECONDPAGEICON DrawSecondPage( U32 wndid )
{
U32 st1, st2, st3; //标题栏
SECONDPAGEICON secondpageicon;
secondpageicon.st = CreateWindow(WNDCLASS_STATIC, NULL, WS_CHILD|SS_TEXT,1,20,LCD_WIDTH-1,108,wndid,0,NULL);
//提醒内容列表
st1 = CreateWindow(WNDCLASS_STATIC, "次数:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,20,34,20,secondpageicon.st,0,NULL);
secondpageicon.ed_num = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, LCD_WIDTH/10+38,20,LCD_WIDTH*0.8-38,20,secondpageicon.st,4,NULL);
st2 = CreateWindow(WNDCLASS_STATIC, "模式:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,42,34,20,secondpageicon.st,0,NULL);
secondpageicon.alarm_list=CreateWindow(WNDCLASS_LIST, NULL, WS_CHILD|LBS_POPUP, LCD_WIDTH/10+38,42,LCD_WIDTH*0.8-38,20,secondpageicon.st,0,(void *)list_alarm);
st3 = CreateWindow(WNDCLASS_STATIC, "内容:", WS_CHILD|SS_TEXT, LCD_WIDTH/10,64,34,20,secondpageicon.st,0,NULL);
secondpageicon.ed_content = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_MULTI_REGULAR, LCD_WIDTH/10+38,64,LCD_WIDTH*0.8-38,40,secondpageicon.st,SCHEME_CONTENT_LEN,NULL);//42
//功能键
secondpageicon.bt_up = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, LCD_WIDTH/2-40,108,20,20,secondpageicon.st,0,(void *)zi_up);
secondpageicon.bt_ok = CreateWindow(WNDCLASS_BUTTON, "确", WS_CHILD|BS_REGULAR, LCD_WIDTH/2-10,108,20,20,secondpageicon.st,0,NULL);
secondpageicon.bt_cancel = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, LCD_WIDTH/2+20,108,20,20,secondpageicon.st,0,(void *)zi_cancel);
return secondpageicon;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -