📄 otherdb.c
字号:
while( i < CARD_DISP_NUM )
{
if( i == 0 )
SetWindowText( *bt_name, "此记录为空!", NULL );
else
SetWindowText( *bt_name, NULL, NULL );
EnableWindow( *bt_name++, FALSE );
i++;
}
bt_name -= i;
return CARD_OK;
}
/***********************************************************************************************/
ADDR_STRU* TransReadCard( RECORDDATA *record, U8 reserved)
{
ADDR_STRU *addr_stru;
BYTE *record;
DBRECORDHEAD *head_info;
U8 *data;
U8 i;
#ifdef SIM_ON_PC
U16 *field_head, next_field_offset;
#else
U16 field_head, next_field_offset;
#endif
if( ( addr_stru = (ADDR_STRU *)Lcalloc(sizeof(ADDR_STRU)) ) == NULL )
return NULL;
head_info = (DBRECORDHEAD *)(record->data);
data = (BYTE *)(&head_info->data);
#ifdef SIM_ON_PC
field_head = (WORD *)data;
addr_stru->name = data + field_head[CARD_NAME];
addr_stru->type = data + field_head[CARD_RELATION];
i = 0;
next_field_offset = field_head[CARD_EMAIL];
while( ( next_field_offset != 0 ) && ( i < 4 ) )
{
addr_stru->email[i] = data + next_field_offset + 2;
next_field_offset = *(WORD *)( data + next_field_offset );
i++;
}
#else
CharToWORD( &field_head, data+CARD_NAME*sizeof(U16) );
next_field_offset = field_head;
addr_stru->name = data + next_field_offset + 2;
CharToWORD( &field_head, data+CARD_RELATION*sizeof(U16) );
next_field_offset = field_head;
addr_stru->type = data + next_field_offset;
i = 0;
CharToWORD( &field_head, data+CARD_EMAIL*sizeof(U16) );
next_field_offset = field_head;
while( ( next_field_offset != 0 ) && ( i < 4 ) )
{
addr_stru->email[i] = data + next_field_offset + 2;
CharToWORD( &field_head, data+next_field_offset );
next_field_offset = field_head;
i++;
}
#endif
return addr_stru;
}
/***********************************************************************************************/
LOCALSEARCHLIST* SearchCard( DBLACB *cardlacb )
{
MSG msg;
U32 hGC;
U8 quit = 0;
U32 searchwin, edit1, keyboard, bt1, bt2, lbox;
P_S8 string1 = "请输入查询数据";
P_S8 tmpbuf = NULL;
U8 style = 0;
LOCALSEARCHLIST *searchlst = NULL;
struct LBOX_ITEM lboxitem[] =
{
ICON_ENABLE, UNDERLINE, "模糊查询",
ICON_ENABLE, UNDERLINE, "精确查询",
ICON_END, UNDERLINE, NULL
};
hGC = GetGC();
searchwin = CreateWindow(WNDCLASS_WIN,"查找",WS_OVERLAPPEDWINDOW,0,0,PHY_LCD_W,PHY_LCD_H,0,0,NULL);
edit1 = CreateWindow( WNDCLASS_EDITOR,NULL,WS_CHILD|ES_SINGLE_REGULAR,10,40,140,20,searchwin,0,NULL);
keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,143,157,16,searchwin,0,NULL);
lbox = CreateWindow( WNDCLASS_LIST,"ListBox",WS_CHILD|LBS_POPUP,40,76,75,16,searchwin,0,lboxitem);
bt1 = CreateWindow( WNDCLASS_BUTTON,"确定",WS_CHILD|BS_REGULAR,20,100,40,20,searchwin,0,NULL);
bt2 = CreateWindow( WNDCLASS_BUTTON,"取消",WS_CHILD|BS_REGULAR,80,100,40,20,searchwin,0,NULL);
SelectListBox( lbox, 0 );//选择文件夹类型(文件夹)
SetFocus( edit1 );
while(!quit)
{
ASIXGetMessage(&msg, NULL, 0, 0);
switch(msg.message)
{
case WM_COMMAND:
if ( msg.lparam == bt1 )
{
tmpbuf = GetEditorStr( edit1, NULL, 0 );//需要判断是否为空,即有否输入数据
if((P_S8)(*tmpbuf) != NULL)
{
searchlst = LocalFindRecord( cardlacb, CARD_NAME_FIELD, tmpbuf, style );
}else{
MessageBox( searchwin, string1, "提醒", MB_OK);
}
}
else if( msg.lparam == bt2 )
quit = TRUE;
break;
case WM_LISTBOX:
if( msg.lparam == lbox )
style = (U8)msg.wparam;
break;
case WM_QUIT:
quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( searchwin );
return searchlst;
}
/***********************************************************************************************/
LOCALSEARCHLIST* DisplayAddr( LOCALSEARCHLIST *card_list, U8 select_no, U8 reserved )
{
static MSG Msg;
U32 pGC;
U8 quit = FALSE;
U32 mainwin; //主窗口
U32 bt_edit, bt_del, bt_first, bt_up, bt_down, bt_last; //功能键
U32 st1, bt_name, st2, bt_type, st3, bt_email[4]; //记录显示区
U16 msgbox;
SCHEME_STRU *scheme_stru;
static char *disp_time, *alarm_type, *alarm_mode; //时间转换为可显示时间、提醒方式(不提醒、开闹铃或提示窗)、定期提醒模式(按月或按年等)
U8 disp_flag = FALSE;
U32 rv;
pGC = GetGC();
memset( (void *)&Msg, 0x0, sizeof(MSG) );
ClearScreen( pGC, WHITE);
mainwin = CreateWindow(WNDCLASS_WIN, "电子秘书", WS_OVERLAPPEDWINDOW|WS_USERBOX|WS_CLOSEBOX, 0,0,LCD_WIDTH-1,LCD_HEIGHT-1,0,0,NULL);
//功能键
bt_edit = CreateWindow(WNDCLASS_BUTTON, "编", WS_CHILD|BS_REGULAR, 4,20,20,20,mainwin,0,NULL);
bt_del = CreateWindow(WNDCLASS_BUTTON, "删", WS_CHILD|BS_REGULAR, 26,20,20,20,mainwin,0,NULL);
bt_first = CreateWindow(WNDCLASS_BUTTON, "一", WS_CHILD|BS_REGULAR, 48,20,20,20,mainwin,0,NULL);
bt_up = CreateWindow(WNDCLASS_BUTTON, "上", WS_CHILD|BS_REGULAR, 70,20,20,20,mainwin,0,NULL);
bt_down = CreateWindow(WNDCLASS_BUTTON, "下", WS_CHILD|BS_REGULAR, 92,20,20,20,mainwin,0,NULL);
bt_last = CreateWindow(WNDCLASS_BUTTON, "最", WS_CHILD|BS_REGULAR, 114,20,20,20,mainwin,0,NULL);
EnableWindow( bt_edit, FALSE );
EnableWindow( bt_del, FALSE );
//内容列表
st1 = CreateWindow(WNDCLASS_STATIC, "姓名:", WS_CHILD|SS_TEXT, 4,42,34,20,mainwin,0,NULL);
bt_name = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 40,42,115,20,mainwin,0,NULL);
st2 = CreateWindow(WNDCLASS_STATIC, "关系:", WS_CHILD|SS_TEXT, 4,64,34,20,mainwin,0,NULL);
bt_type = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 40,64,115,20,mainwin,0,NULL);
st3 = CreateWindow(WNDCLASS_STATIC, "电邮:", WS_CHILD|SS_TEXT, 4,86,34,20,mainwin,0,NULL);
//按钮的初始化:
i = 86;
for( count = 0; count < CARD_DISP_NUM; count++ )
{
bt_email[count] = CreateWindow(WNDCLASS_BUTTON,NULL,WS_CHILD|BS_REGULAR,40,i,115,20,mainwin,0,NULL);
i += 21;
SetWindowText( bt_email[count], NULL, 0);
EnableWindow( bt_email[count], FALSE );
}
scheme_stru = TransReadScheme( select_no, 0 ); //获得提醒记录的内容
if( ( disp_time = Switch2DispTime( scheme_stru->time ) ) == NULL ) //转换为可显示的时间
return SCHEME_ERROR;
alarm_mode = GetAlarmMode( scheme_stru->alarm_mode );//提醒模式(按月或按年)
alarm_type = GetAlarmType( scheme_stru->alarm_type );//提醒方式(不提醒、开闹铃或提示窗)
//显示记录内容
SetWindowText( st_name, scheme_stru->name, NULL ); //名称
SetWindowText( st_time, disp_time, NULL ); //时间
SetWindowText( st_period, alarm_mode, NULL ); //提醒模式(按月或按年)
SetWindowText( st_num, scheme_stru->alarm_repeat_num, NULL ); //提醒次数
SetWindowText( st_type, alarm_type, NULL ); //提醒方式(不提醒、开闹铃或提示窗)
SetWindowText( ed_content, scheme_stru->content, NULL ); //提醒内容
if( *(scheme_stru->type) == SCHEME_MATURITY ) //过期的提醒不能再编辑
EnableWindow( bt_edit, FALSE );
if( select_no == 0 ) //第一条记录
{
EnableWindow( bt_first, FALSE );
EnableWindow( bt_up, FALSE );
}
if( ( global_scheme_list->num == 1 ) //只有一条记录
|| ( select_no == (U8)( global_scheme_list->num - 1 ) ) ) //最后一条记录
{
EnableWindow( bt_last, FALSE );
EnableWindow( bt_down, FALSE );
}
while( !quit )
{
ASIXGetMessage( &Msg, NULL, 0, 0 );
switch( Msg.message )
{
case WM_COMMAND:
if( Msg.lparam == bt_edit ) //编辑
{
disp_flag = TRUE; //显示新的记录的标志
//检查当前记录
rv = CheckSchemeValidity( &select_no, 0 );//检查当前记录
if( rv == SCHEME_DEL )
{
msgbox = MessageBox( mainwin, "这个提醒记录已不存在", "警告", MB_OK);
}
else if( rv == SCHEME_MATU )
{
EnableWindow( bt_edit, FALSE );
}else{
EnableWindow( bt_edit, TRUE );
scheme_stru = TransReadScheme( select_no, 0 );
ModifyScheme( &select_no, scheme_stru, 0 );
if( rv == SCHEME_ERROR )
return SCHEME_ERROR;
}
}
else if( Msg.lparam == bt_del ) //删除
{
disp_flag = TRUE; //显示新的记录的标志
//检查当前记录
rv = CheckSchemeValidity( &select_no, 0 );//检查当前记录
if( rv == SCHEME_DEL )
{
msgbox = MessageBox( mainwin, "这个提醒记录已不存在", "警告", MB_OK);
}else{
if( rv == SCHEME_MATU )
{
EnableWindow( bt_edit, FALSE );
}else{
EnableWindow( bt_edit, TRUE );
}
msgbox = MessageBox( mainwin, "确实要删除此记录吗?", "提醒", MB_OKCANCEL|MB_ICONQUESTION );
if( msgbox == IDOK )
{
DynAlarm( global_scheme_list->head[select_no].index, DEL_TIMER );
if( TransDelScheme( select_no, 0 ) == SCHEME_ERROR ) //删除提醒
return SCHEME_ERROR;
if( select_no == global_scheme_list->num ) //删除的是最后一条记录,显示前一条记录
select_no = global_scheme_list->num - 1;
}else{
disp_flag = FALSE;
}
}
}
else if( Msg.lparam == bt_first )//第一条
{
if( select_no != 0 )
{
disp_flag = TRUE; //显示新的记录的标志
select_no = 0; //到顶
}
}
else if( Msg.lparam == bt_up ) //上一条
{
if( select_no != 0 )
{
disp_flag = TRUE; //显示新的记录的标志
select_no = select_no - 1;
}
}
else if( Msg.lparam == bt_down )//下一条
{
if( select_no != ( global_scheme_list->num - 1 ) )
{
disp_flag = TRUE; //显示新的记录的标志
select_no = select_no + 1;
}
}
else if( Msg.lparam == bt_last )//最后一条
{
if( select_no != ( global_scheme_list->num - 1 ) )
{
disp_flag = TRUE; //显示新的记录的标志
select_no = ( global_scheme_list->num - 1 ); //到底
}
}
// while( !check )
// {
if( disp_flag == TRUE )
{
disp_flag = FALSE; //重置显示标志
rv = CheckSchemeValidity( &select_no, 0 );//检查当前记录
if( rv == SCHEME_DEL )
{
msgbox = MessageBox( mainwin, "这个提醒记录已不存在", "警告", MB_OK|MB_ICONERROR);
// check = FALSE;
}else{
if( rv == SCHEME_MATU )
{
EnableWindow( bt_edit, FALSE );
}else{
EnableWindow( bt_edit, TRUE );
}
scheme_stru = TransReadScheme( select_no, 0 );//获得提醒记录的内容
if( ( disp_time = Switch2DispTime( scheme_stru->time ) ) == NULL ) //转换为可显示的时间
return SCHEME_ERROR;
alarm_mode = GetAlarmMode( scheme_stru->alarm_mode );//提醒模式(按月或按年)
alarm_type = GetAlarmType( scheme_stru->alarm_type );//提醒方式(不提醒、开闹铃或提示窗)
//显示记录内容
SetWindowText( st_name, scheme_stru->name, NULL ); //名称
SetWindowText( st_time, disp_time, NULL ); //时间
SetWindowText( st_period, alarm_mode, NULL ); //提醒模式(按月或按年)
SetWindowText( st_num, scheme_stru->alarm_repeat_num, NULL ); //提醒次数
SetWindowText( st_type, alarm_type, NULL ); //提醒方式(不提醒、开闹铃或提示窗)
SetWindowText( ed_content, scheme_stru->content, NULL ); //提醒内容
if( select_no == 0 ) //第一条记录
{
EnableWindow( bt_first, FALSE );
EnableWindow( bt_up, FALSE );
}else{
EnableWindow( bt_first, TRUE );
EnableWindow( bt_up, TRUE );
}
if( ( global_scheme_list->num == 1 ) //只有一条记录
|| ( select_no == (U8)( global_scheme_list->num - 1 ) ) ) //最后一条记录
{
EnableWindow( bt_last, FALSE );
EnableWindow( bt_down, FALSE );
}else{
EnableWindow( bt_last, TRUE );
EnableWindow( bt_down, TRUE );
}
// check = TRUE;
}
}
// }
// check = FALSE;
break;
case WM_QUIT:
quit = TRUE;
break;
default:
break;
}
DefWindowProc( Msg.message, Msg.lparam, Msg.data, Msg.wparam );
}
DestroyWindow( mainwin );
return SCHEME_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -