📄 emlfunc.c
字号:
static MSG Msg;
U32 pGC;
U8 quit = FALSE;
U32 mainwin, keyboard, kb, st, tskbar; //主窗口、软件盘
U32 ed_addresser, ed_subject, ed_content, ed_content_big;//编辑器
U32 bt_new, bt_send, bt_addrbk, bt_ntpad, menu_save, bt_cancel;//功能键
U16 msgbox;
U8 addr_flag = TRUE, sub_flag = TRUE, cnt_flag = TRUE, kbflag = TRUE;
EMAIL_STRU *email_stru;
ASIX_DATE cur_date;
ASIX_TIME cur_time;
TIME_STRU *time, conversion_time;
U32 id = 0;
U32 rv = EMAIL_OK;
static char time_buf[EMAIL_TIME_LEN] = {0}, addresser_buf[EMAIL_ADDRESSER_LEN] = {0};
static char subject_buf[EMAIL_SUBJECT_LEN] = {0}, content_buf[EMAIL_CONTENT_LEN] = {0};
static char type_buf[EMAIL_TYPE_LEN] = {0}, box_buf[EMAIL_BOX_LEN] = {0};
char *addressee_buf = cur_account;
struct MENU_ITEM save_menu[]=
{
1, 1, "存到地址本",
1, 1, "存到发件箱",
1, 1, "存到记事本",
0, 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);
keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,mainwin,0,NULL);
kb = AddBtn2TskBar(tskbar, NULL, BS_ICON, 20, (char *)zi_jianpan);
st = CreateWindow(WNDCLASS_STATIC, NULL, WS_CHILD|SS_TEXT,1,20,LCD_WIDTH-1,108,mainwin,0,NULL);
//功能键
bt_new = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 4, 20,20,20,mainwin,0,(void *)zi_delete);
bt_send = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 26, 20,20,20,mainwin,0,(void *)zi_fasongduanxin);
bt_addrbk = CreateWindow(WNDCLASS_BUTTON, "地", WS_CHILD|BS_REGULAR, 48, 20,20,20,mainwin,0,NULL);
bt_ntpad = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 70, 20,20,20,mainwin,0,(void *)zi_jishibenchazhao);
menu_save = CreateWindow(WNDCLASS_MENU, (void *)zi_save, WS_CHILD, 92, 20, 20, 20, mainwin, 0, (void *)save_menu);
bt_cancel = CreateWindow(WNDCLASS_BUTTON, NULL, WS_CHILD|BS_REGULAR, 114, 20,20,20,mainwin,0,(void *)zi_cancel);
//编辑邮件
/* st1 = CreateWindow(WNDCLASS_STATIC, NULL, WS_CHILD|SS_TEXT,1,20,LCD_WIDTH-1,108,mainwin,0,NULL);
st3 = CreateWindow(WNDCLASS_STATIC, "收件人:", WS_CHILD|SS_TEXT, 4,42,44,20,st1,0,NULL);
ed_addresser = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 40,42,108,20,st1,EMAIL_ADDRESSER_LEN,NULL);
st4 = CreateWindow(WNDCLASS_STATIC, "发件人:", WS_CHILD|SS_TEXT, 4,64,44,20,st1,0,NULL);
ed_subject = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 40,64,108,20,st1,EMAIL_ADDRESSEE_LEN,NULL);
st5 = CreateWindow(WNDCLASS_STATIC, "主题:", WS_CHILD|SS_TEXT, 4,86,44,20,st1,0,NULL);
ed_subject = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 40,86,108,20,st1,EMAIL_SUBJECT_LEN,NULL);
*/
ed_addresser = CreateWindow(WNDCLASS_EDITOR, "请输入收件人地址", WS_CHILD|ES_SINGLE_REGULAR, 4,42,152,20,st,EMAIL_ADDRESSER_LEN,NULL);
ed_subject = CreateWindow(WNDCLASS_EDITOR, "请输入主题", WS_CHILD|ES_SINGLE_REGULAR, 4,64,152,20,st,EMAIL_SUBJECT_LEN,NULL);
ed_content = CreateWindow(WNDCLASS_EDITOR, "请输入正文", WS_CHILD|ES_MULTI_REGULAR, 4,86,152,40,st,EMAIL_CONTENT_LEN,NULL);
if( ( email_stru = (EMAIL_STRU *)Lmalloc( sizeof(EMAIL_STRU) ) ) == NULL ) //获得提醒记录的内容
return EMAIL_ERROR;
SetFocus( ed_addresser );
while( !quit )
{
ASIXGetMessage( &Msg, NULL, 0, 0 );
switch( Msg.message )
{
case WM_COMMAND:
if( Msg.lparam == bt_new ) //新建
{
addr_flag = FALSE;
sub_flag = FALSE;
cnt_flag = FALSE;
SetWindowText( ed_addresser, NULL, NULL );
SetWindowText( ed_subject, NULL, NULL );
SetWindowText( ed_content, NULL, NULL );
SetFocus( ed_addresser );
}
if( Msg.lparam == bt_send ) //发送
{
GetEditorStr( ed_addresser, addresser_buf, EMAIL_ADDRESSER_LEN );
if( ( addresser_buf[0] == 0 ) || ( addr_flag == TRUE ) )
{
msgbox = MessageBox( mainwin, "收件人不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
}else{
addresser_buf[strlen(addresser_buf)] = '\0';
email_stru->addresser = addresser_buf;
GetEditorStr( ed_subject, subject_buf, EMAIL_SUBJECT_LEN );
if( ( subject_buf[0] == 0 ) || ( sub_flag == TRUE ) )
{
email_stru->subject = "无主题";
}else{
email_stru->subject = subject_buf;
}
GetEditorStr( ed_content, content_buf, EMAIL_CONTENT_LEN );
if( ( content_buf[0] == 0 ) || ( cnt_flag == TRUE ) )
{
email_stru->content = NULL;
}else{
email_stru->content = content_buf;
}
ReadDateTime( &cur_date, &cur_time );
conversion_time.year = (U32)cur_date.year;
conversion_time.month = cur_date.month;
conversion_time.day = cur_date.day;
conversion_time.hour = cur_time.hour;
conversion_time.minute = cur_time.minute;
conversion_time.second = 0;
if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
{
Lfree(email_stru);
return EMAIL_ERROR;
}
TimetoChar( &conversion_time, time );
memcpy( time_buf, time, sizeof(TIME_STRU) );
time_buf[14] = '\0';
Lfree( time );
email_stru->time = time_buf;
email_stru->addressee = addressee_buf;
box_buf[0] = EMAIL_UNSEND_BOX;
email_stru->box = box_buf;
type_buf[0] = EMAIL_UNSEND;
email_stru->type = type_buf;
if( TransCreateEmail( email_stru, 0 ) != EMAIL_OK )
MessageBox(mainwin, "保存失败!", "提醒", MB_ICONEXCLAMATION|MB_OK);
// dial();
}
}
if( Msg.lparam == bt_addrbk ) //从地址本导入收件人地址
{
}
if( Msg.lparam == bt_ntpad ) //从记事本导入正文
{
}
if( Msg.lparam == menu_save ) //保存
{
GetEditorStr( ed_addresser, addresser_buf, EMAIL_ADDRESSER_LEN );
if( ( addresser_buf[0] == 0 ) || ( addr_flag == TRUE ) )
{
msgbox = MessageBox( mainwin, "收件人不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
}else{
addresser_buf[strlen(addresser_buf)] = '\0';
email_stru->addresser = addresser_buf;
GetEditorStr( ed_subject, subject_buf, EMAIL_SUBJECT_LEN );
if( ( subject_buf[0] == 0 ) || ( sub_flag == TRUE ) )
{
email_stru->subject = "无主题";
}else{
email_stru->subject = subject_buf;
}
GetEditorStr( ed_content, content_buf, EMAIL_CONTENT_LEN );
if( ( content_buf[0] == 0 ) || ( cnt_flag == TRUE ) )
{
email_stru->content = NULL;
}else{
email_stru->content = content_buf;
}
ReadDateTime( &cur_date, &cur_time );
conversion_time.year = (U32)cur_date.year;
conversion_time.month = cur_date.month;
conversion_time.day = cur_date.day;
conversion_time.hour = cur_time.hour;
conversion_time.minute = cur_time.minute;
conversion_time.second = 0;
if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
{
Lfree(email_stru);
return EMAIL_ERROR;
}
TimetoChar( &conversion_time, time );
memcpy( time_buf, time, sizeof(TIME_STRU) );
time_buf[14] = '\0';
Lfree( time );
email_stru->time = time_buf;
email_stru->addressee = addressee_buf;
box_buf[0] = EMAIL_UNSEND_BOX;
email_stru->box = box_buf;
type_buf[0] = EMAIL_UNSEND;
email_stru->type = type_buf;
SaveEmail( email_stru, (U8)Msg.wparam );
}
}
if( Msg.lparam == bt_cancel ) //取消
{
quit = TRUE;
}
if( Msg.lparam == kb )
{
if( kbflag == FALSE ) //无键盘
{
GetEditorStr( ed_content_big, content_buf, EMAIL_CONTENT_LEN );
DestroyWindow( ed_content_big );
ed_content = CreateWindow(WNDCLASS_EDITOR, content_buf, WS_CHILD|ES_MULTI_REGULAR, 4,86,152,40,st,EMAIL_CONTENT_LEN,NULL);
SetFocus( ed_addresser );
keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,mainwin,0,NULL);
kbflag = TRUE;
}else{ //有键盘
DestroyWindow( keyboard );
GetEditorStr( ed_content, content_buf, EMAIL_CONTENT_LEN );
DestroyWindow( ed_content );
ed_content_big = CreateWindow(WNDCLASS_EDITOR, content_buf, WS_CHILD|ES_MULTI_REGULAR, 4,86,152,132,st,EMAIL_CONTENT_LEN,NULL);
kbflag = FALSE;
}
}
break;
case WM_PENDOWN: //点击编辑框
if( Msg.lparam == ed_addresser ) //点击收件人输入栏
{
if( addr_flag == TRUE )
{
SetWindowText( ed_addresser, NULL, 0 );
addr_flag = FALSE;
}
}
if( Msg.lparam == ed_subject ) //点击主题输入栏
{
if( sub_flag == TRUE )
{
SetWindowText( ed_subject, NULL, 0 );
sub_flag = FALSE;
}
}
if( Msg.lparam == ed_content ) //点击邮件内容输入栏
{
if( cnt_flag == TRUE )
{
SetWindowText( ed_content, NULL, 0 );
cnt_flag = FALSE;
}
}
if( Msg.lparam == ed_content_big ) //点击邮件内容输入栏
{
if( cnt_flag == TRUE )
{
SetWindowText( ed_content_big, NULL, 0 );
cnt_flag = FALSE;
}
}
break;
case WM_QUIT:
quit = TRUE;
break;
default:
break;
}
DefWindowProc( Msg.message, Msg.lparam, Msg.data, Msg.wparam );
}
Lfree( email_stru );
DestroyWindow( mainwin );
return rv;
}
/***********************************************************************************************/
//转换为可显示的时间
char* Switch2DispTime( char *time )
{
char *disp_time, *temp_disp_time, *temp_time;
if( ( disp_time = (char *)SysLmalloc(EMAIL_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;
}
/***********************************************************************************************/
//按查询
LOCALSEARCHLIST* SearchEmail( LOCALSEARCHLIST *global_email_list, U8 type, U8 reversed )
{
switch( type )
{
case BY_TIME:
return SearchByDate( global_email_list, 0 );
break;
case BY_SUBJECT:
return SearchBySub( global_email_list, 0 );
break;
case BY_ADDRESSER:
// return SearchByAddr( global_email_list, 0 );
break;
default:
break;
}
return global_email_list;
}
/***********************************************************************************************/
//按主题查询
LOCALSEARCHLIST* SearchBySub( LOCALSEARCHLIST *global_email_list, U8 reversed )
{
static MSG Msg;
U32 pGC;
U8 quit = FALSE;
U32 mainwin; //主窗口
U32 tskbar;
U32 check, st1, ed_keystring; //关键字输入区
U32 bt_ok, bt_cancel, keyboard; //功能键
U16 msgbox;
static char keystring[KEYSTRING_LEN] = {0};
U8 mode = PRECISE_PART_MATCH;
EMAIL_SEARCH_STRU email_search_stru;
U16 number;
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, 5,22,80,40,mainwin,0, item);//|SLS_FRAME
st1 = CreateWindow(WNDCLASS_STATIC, "请输入关键字:", WS_CHILD|SS_TEXT, 4,64,70,20,mainwin,0,NULL);
ed_keystring = CreateWindow(WNDCLASS_EDITOR, NULL, WS_CHILD|ES_SINGLE_REGULAR, 4,86,152,20,mainwin,9,NULL);
//功能键
bt_ok = CreateWindow(WNDCLASS_BUTTON, "确定", WS_CHILD|BS_REGULAR, 30,108,40,20,mainwin,0,NULL);
bt_cancel = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD|BS_REGULAR, 90,108,40,20,mainwin,0,NULL);
keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,150,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_email_list, &number );
// global_email_list = LocalFindRecord( emaillacb, EMAIL_SUBIECT, keystring, mode );
email_search_stru.field = EMAIL_SUBIECT;
email_search_stru.keystring = keystring;
email_search_stru.mode = mode;
global_email_list = TransSearchEmail( &email_search_stru, 0 );
// *number = global_email_list->num;
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 );
return global_email_list;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -