⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emlfunc.c

📁 国家ASIC工程中心使用的嵌入式操作系统
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -