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

📄 schfunc.c

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