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

📄 schfunc.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
							break;
					}
				}

				break;
			case WM_COMMAND:
				if( Msg.lparam == bt_down )			//下一页
				{
					GetEditorStr( ed_name, name_buf, SCHEME_NAME_LEN );
					if( name_buf[0] == 0 )
						msgbox = MessageBox( mainwin, "标题不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
					else{
						if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
							return SCHEME_ERROR;
						TimetoChar( conversion_time, time );
						memcpy( time_buf, time, sizeof(TIME_STRU) );
						time_buf[14] = '\0';
						Lfree(time);
						
						scheme_stru->name = name_buf;
						scheme_stru->time = time_buf;
						scheme_stru->alarm_mode = period_buf;
						scheme_stru->type = scheme_stru->type;
						DestroyWindow( st );

						control_symbol = MODIFY_SECOND_PAGE;
						secondpageicon = DrawSecondPage( mainwin );
						st = secondpageicon.st;
						ed_num = secondpageicon.ed_num;
						alarm_list = secondpageicon.alarm_list;
						ed_content = secondpageicon.ed_content;
						bt_up = secondpageicon.bt_up;
						bt_ok = secondpageicon.bt_ok;
						bt_cancel = secondpageicon.bt_cancel;

						//显示记录内容
						SetWindowText( ed_num, scheme_stru->alarm_repeat_num, NULL );		//次数
						SelectListBox( alarm_list, (U8)(*(scheme_stru->alarm_type)-48) );	//提醒模式
						SetWindowText( ed_content, scheme_stru->content, NULL );			//内容
//						memcpy( alarm_type, scheme_stru->alarm_type, SCHEME_ALARM_TYPE_LEN );	//提醒模式
						SetFocus( ed_num );
					}
				}
				else if( Msg.lparam == bt_up )			//上一页
				{
					GetEditorStr( ed_num, num_buf, SCHEME_ALARM_REPEAT_NUM_LEN - 1 );
					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;

						DestroyWindow( st );
						control_symbol = MODIFY_FIRST_PAGE; 
						firstpageicon = DrawFirstPage( mainwin );
						st = firstpageicon.st;
						ed_name = firstpageicon.ed_name;
						year_list = firstpageicon.year_list;
						month_list = firstpageicon.month_list;
						day_list = firstpageicon.day_list;
						hour_list = firstpageicon.hour_list;
						minute_list = firstpageicon.minute_list;
						period_list = firstpageicon.period_list;
						bt_down = firstpageicon.bt_down;
						bt_ok = firstpageicon.bt_ok;
						bt_cancel = firstpageicon.bt_cancel;

						time = (TIME_STRU *)scheme_stru->time;
						TimetoInt( time, conversion_time );
						//显示记录内容
						SetWindowText( ed_name, scheme_stru->name, NULL );		//名称
						SelectListBox( year_list, (U8)(conversion_time->year-2000-1) );
						SelectListBox( month_list, (U8)(conversion_time->month-1) );
						SelectListBox( day_list, (U8)(conversion_time->day-1) );
						SelectListBox( hour_list, (U8)conversion_time->hour );
						SelectListBox( minute_list, (U8)conversion_time->minute );
						SelectListBox( period_list, (U8)(*(scheme_stru->alarm_mode)-48) );

//						memcpy( period_buf, scheme_stru->alarm_mode, SCHEME_ALARM_MODE_LEN );
						SetFocus( ed_name );
					}
				}
				
				if( Msg.lparam == bt_ok )	//确定
				{
					if( control_symbol == MODIFY_FIRST_PAGE )//页面控制标志(第一页)
					{
						GetEditorStr( ed_name, name_buf, SCHEME_NAME_LEN );
						if( name_buf[0] == 0 )
						{
							msgbox = MessageBox( mainwin, "标题不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
						}else{
							if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
								return SCHEME_ERROR;
							TimetoChar( conversion_time, time );
							memcpy( time_buf, time, sizeof(TIME_STRU) );
							time_buf[14] = '\0';
							Lfree( time );

							scheme_stru->name = name_buf;
							scheme_stru->time = time_buf;
							scheme_stru->alarm_mode = period_buf;

							if( TransModifyScheme( *select_no, scheme_stru, 0 ) != SCHEME_OK )
								return SCHEME_ERROR;
							DynAlarm( global_scheme_list->head[*select_no].index, MODIFY_TIMER );
							goto endrv;
						}
					}
					else if( control_symbol == MODIFY_SECOND_PAGE )//页面控制标志(第二页)
					{
						if( *(scheme_stru->name) == 0 )
						{
							msgbox = MessageBox( mainwin, "标题不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
						}else{
							GetEditorStr( ed_num, num_buf, SCHEME_ALARM_REPEAT_NUM_LEN - 1 );
							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( TransModifyScheme( *select_no, scheme_stru, 0 ) != SCHEME_OK )
									return SCHEME_ERROR;
								DynAlarm( global_scheme_list->head[*select_no].index, MODIFY_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 );
	DestroyWindow( mainwin );
	return rv;
}

/***********************************************************************************************/
//编辑提醒的页面
STATUS CreateScheme( U8 reserved )
{
	static	MSG    	Msg;
	U32				pGC;
	U8				quit = FALSE;
	U32				mainwin, keyboard, tskbar;	//主窗口、软件盘
	U32				ed_name, year_list,month_list, day_list, hour_list, minute_list, period_list;	//提醒记录显示区(第一页)	
	U32				st, bt_down, bt_up, bt_ok, bt_cancel;//静态框、功能键
	U32				ed_num, alarm_list, ed_content;	//提醒记录显示区(第二页)
	SCHEME_STRU		*scheme_stru;
	FIRSTPAGEICON	firstpageicon;
	SECONDPAGEICON	secondpageicon;
	U16				msgbox;
	ASIX_DATE		cur_date;
	ASIX_TIME		cur_time;
	TIME_STRU		*time, *conversion_time;
	U32				id = 0;
 	U32				rv = SCHEME_OK;
 	U8				control_symbol = CREATE_FIRST_PAGE;
  
	static char	    time_buf[SCHEME_TIME_LEN] = {0}, name_buf[SCHEME_NAME_LEN] = {0}; 
	static char	    alarm_type[SCHEME_ALARM_TYPE_LEN] = {0}, period_buf[SCHEME_ALARM_MODE_LEN] = {0};
	static char	    type_buf[SCHEME_TYPE_LEN] = {0};
	static char		num_buf[SCHEME_ALARM_REPEAT_NUM_LEN] = {0}, content_buf[SCHEME_CONTENT_LEN] = {0};
	
	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);
	keyboard = CreateWindow( WNDCLASS_KEYBD,NULL,WS_CHILD|KBS_PINGYING|0xff,1,144,158,70,mainwin,0,NULL);
	//任务栏
	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);

	firstpageicon = DrawFirstPage( mainwin );

	st = firstpageicon.st;
	ed_name = firstpageicon.ed_name;
	year_list = firstpageicon.year_list;
	month_list = firstpageicon.month_list;
	day_list = firstpageicon.day_list;
	hour_list = firstpageicon.hour_list;
	minute_list = firstpageicon.minute_list;
	period_list = firstpageicon.period_list;
	bt_down = firstpageicon.bt_down;
	bt_ok = firstpageicon.bt_ok;
	bt_cancel = firstpageicon.bt_cancel;

	if( ( conversion_time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
		return SCHEME_ERROR;

	if( ( scheme_stru = (SCHEME_STRU *)Lmalloc( sizeof(SCHEME_STRU) ) ) == NULL ) 		//获得提醒记录的内容
	{
		Lfree( conversion_time );
		return SCHEME_ERROR;
	}

	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;
	SelectListBox( year_list, (U8)(cur_date.year-2000-1) );
	SelectListBox( month_list, (U8)(cur_date.month-1) );
	SelectListBox( day_list, (U8)(cur_date.day-1) );
	SelectListBox( hour_list, (U8)cur_time.hour );
	SelectListBox( minute_list, (U8)cur_time.minute );
	SelectListBox( period_list, (U8)(BY_DAY-48) );
	
	period_buf[0] = BY_DAY;
	type_buf[0] = SCHEME_NO_MATURITY;	//未到期
	alarm_type[0] = RING_ALARM;		

	scheme_stru->alarm_repeat_num = "1";
	scheme_stru->alarm_type = alarm_type;
	scheme_stru->content = NULL;
	scheme_stru->type = type_buf;

	SetFocus( ed_name );
	while( !quit )
	{
		ASIXGetMessage( &Msg, NULL, 0, 0 );
		switch( Msg.message )
		{
			case	WM_LISTBOX:
				if( Msg.lparam == period_list )
				{
					switch( Msg.wparam )
					{
						case	0:
							period_buf[0] = BY_HOUR;
							break;
						case	1:
							period_buf[0] = BY_DAY;
							break;
						case	2:
							period_buf[0] = BY_WEEK;
							break;
						case	3:
							period_buf[0] = BY_MONTH;
							break;
						case	4:
							period_buf[0] = BY_YEAR;
							break;
					}
				}

				if( Msg.lparam == year_list )
					conversion_time->year = Msg.wparam + 2000 + 1;
					
				if( Msg.lparam == month_list )
					conversion_time->month = Msg.wparam + 1;
						
				if( Msg.lparam == day_list )
					conversion_time->day = Msg.wparam + 1;
						
				if( Msg.lparam == hour_list )
					conversion_time->hour = Msg.wparam;
				
				if( Msg.lparam == minute_list )
					conversion_time->minute = Msg.wparam;

				if( Msg.lparam == alarm_list )
				{
					switch( Msg.wparam )
					{
						case	0:
							alarm_type[0] = DO_NOT_ALARM;
							break;
						case	1:
							alarm_type[0] = RING_ALARM;
							break;
						case	2:
							alarm_type[0] = WINDOW_ALARM;
							break;
					}
				}
				break;
			case WM_COMMAND:
				if( Msg.lparam == bt_down )			//下一页
				{
					GetEditorStr( ed_name, name_buf, SCHEME_NAME_LEN );

					if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
						return SCHEME_ERROR;
					TimetoChar( conversion_time, time );
					memcpy( time_buf, time, sizeof(TIME_STRU) );
					time_buf[14] = '\0';
					Lfree(time);

					scheme_stru->name = name_buf;
					scheme_stru->time = time_buf;
					scheme_stru->alarm_mode = period_buf;

					DestroyWindow( st );

					control_symbol = CREATE_SECOND_PAGE;
					secondpageicon = DrawSecondPage( mainwin );

					st = secondpageicon.st;
					ed_num = secondpageicon.ed_num;
					alarm_list = secondpageicon.alarm_list;
					ed_content = secondpageicon.ed_content;
					bt_up = secondpageicon.bt_up;
					bt_ok = secondpageicon.bt_ok;
					bt_cancel = secondpageicon.bt_cancel;

					//显示记录内容
					SetWindowText( ed_num, scheme_stru->alarm_repeat_num, NULL );		//次数
					SelectListBox( alarm_list, (U8)(*(scheme_stru->alarm_type)-48) );	//提醒模式
					SetWindowText( ed_content, scheme_stru->content, NULL );			//内容

					memcpy( alarm_type, scheme_stru->alarm_type, SCHEME_ALARM_TYPE_LEN );	//提醒模式
					SetFocus( ed_num );
				}

				if( Msg.lparam == bt_up )			//上一页
				{
					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;
						DestroyWindow( st );
			
						control_symbol = MODIFY_FIRST_PAGE; 
						firstpageicon = DrawFirstPage( mainwin );

						st = firstpageicon.st;
						ed_name = firstpageicon.ed_name;
						year_list = firstpageicon.year_list;
						month_list = firstpageicon.month_list;
						day_list = firstpageicon.day_list;
						hour_list = firstpageicon.hour_list;
						minute_list = firstpageicon.minute_list;
						period_list = firstpageicon.period_list;
						bt_down = firstpageicon.bt_down;
						bt_ok = firstpageicon.bt_ok;
						bt_cancel = firstpageicon.bt_cancel;

						time = (TIME_STRU *)scheme_stru->time;
						TimetoInt( time, conversion_time );
						//显示记录内容
						SetWindowText( ed_name, scheme_stru->name, NULL );		//名称
						SelectListBox( year_list, (U8)(conversion_time->year-2000-1) );
						SelectListBox( month_list, (U8)(conversion_time->month-1) );
						SelectListBox( day_list, (U8)(conversion_time->day-1) );
						SelectListBox( hour_list, (U8)conversion_time->hour );
						SelectListBox( minute_list, (U8)conversion_time->minute );
						SelectListBox( period_list, (U8)(*(scheme_stru->alarm_mode)-48) );

//						memcpy( period_buf, scheme_stru->alarm_mode, SCHEME_ALARM_MODE_LEN );
						SetFocus( ed_name );
					}
				}
				
				if( Msg.lparam == bt_ok )	//确定
				{
					GetEditorStr( ed_name, name_buf, SCHEME_NAME_LEN );
					if( name_buf[0] == 0 )
					{
						msgbox = MessageBox( mainwin, "标题不能为空!", "友情提醒", MB_OK|MB_ICONEXCLAMATION );
					}else{
						if( control_symbol == CREATE_FIRST_PAGE )//页面控制标志(第一页)
						{
							if( ( time = (TIME_STRU *)Lmalloc(sizeof(TIME_STRU) ) ) == NULL )
								return SCHEME_ERROR;
							TimetoChar( conversion_time, time );
							memcpy( time_buf, time, sizeof(TIME_STRU) );
							time_buf[14] = '\0';
							Lfree(time);

							scheme_stru->name = name_buf;
							scheme_stru->time = time_buf;
							scheme_stru->alarm_mode = period_buf;

							if( TransCreateScheme( &id, scheme_stru, 0 ) != SCHEME_OK )
								return SCHEME_ERROR;
							DynAlarm( id, ADD_TIMER );
							goto endrv;
						}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -