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

📄 scheme.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
					scheme_search_stru.keystring = keystring;
					scheme_search_stru.field = SCHEME_TIME;
					scheme_search_stru.mode = PRECISE_FULL_MATCH;
					type[0] = SCHEME_NO_MATURITY;	//当天未到期的提醒
					type[1] = '\0';
					scheme_search_stru.type = type;
					global_scheme_list = TransSearchScheme( &scheme_search_stru, 0 );	//读出某天的提醒记录
					if( global_scheme_list == NULL )
						MessageBox( mainwin, "电子秘书读入当天提醒失败!", "友情提醒", MB_OK);
					else
						number = global_scheme_list->num;
					display_flag = TRUE;
				}
			
				if( Msg.lparam == bt_add ) 	//添加
				{
					if( CreateScheme( 0 ) != SCHEME_OK )
						msgbox = MessageBox(mainwin, "创建提醒失败!", "友情提醒", MB_OKCANCEL|MB_ICONERROR);
					display_flag = TRUE;
					day_flag = TRUE;
				}
										
				if( Msg.lparam == bt_del )	//删除
				{
					if( select_bt != SCHEME_DISP_NUM )	
					{  
						msgbox = MessageBox(mainwin, "是否要删除此普通提醒?", "提示窗", MB_OKCANCEL|MB_ICONEXCLAMATION|MB_DEFBUTTON1);
						if( msgbox == IDOK )
						{
							select_no = suffix_in_disp[ select_bt ];
							//检查当前记录
							cur_no = (U8)select_no;
							scheme_stru = TransReadScheme( select_no, 0 );
//							scheme_stru = TransReadScheme( select_no, &record );
							GetDate( &date );
							com_time = (TIME_STRU *)(scheme_stru->time);
							TimetoInt( com_time, &conversion_time );
							if( ( *(scheme_stru->type) != SCHEME_MATURITY ) && ( *(scheme_stru->alarm_type) != DO_NOT_ALARM ) )		//过期的提醒不能再编辑//提醒方式为不提醒
								DynAlarm( global_scheme_list->head[select_no].index , DEL_TIMER );
							if( TransDelScheme( select_no, 0 ) != SCHEME_OK  ) 
								msgbox = MessageBox(mainwin, "删除提醒失败!", "友情提醒", MB_OKCANCEL|MB_ICONEXCLAMATION);
							else
								number = global_scheme_list->num;
							Lfree( scheme_stru );
//							Lfree( record );
							display_flag = TRUE;
						}
					}else{
						msgbox = MessageBox( mainwin, "请选择要删除的记录!", "友情提醒", MB_OK|MB_ICONEXCLAMATION);	
					}
				}
				
				if( Msg.lparam == bt_day )//当日记录
				{
					display_flag = TRUE;
					day_flag = TRUE;
				}
			
				if( Msg.lparam == bt_history )	//历史记录
				{
					FreeDBList( &global_scheme_list, &number );
					keystring[0] = SCHEME_MATURITY;
					keystring[1] = '\0';

					//填充搜索结构
					scheme_search_stru.keystring = keystring;
					scheme_search_stru.field = SCHEME_TYPE;
					scheme_search_stru.mode = PRECISE_FULL_MATCH;
					type[0] = SCHEME_ALL;
					scheme_search_stru.type = type;
					global_scheme_list = TransSearchScheme( &scheme_search_stru, 0 );	//读出某天的提醒记录
					if( global_scheme_list == NULL )
						MessageBox( mainwin, "电子秘书读入当天提醒失败!", "友情提醒", MB_OK);
					else
						number = global_scheme_list->num;
					display_flag = TRUE;
					history_flag = TRUE;
				}

				if( Msg.lparam == search_menu )	//查找
				{
					SearchScheme( (U8)Msg.wparam, 0 );
					if( global_scheme_list == NULL )
						MessageBox( mainwin, "电子秘书读入当天提醒失败!", "友情提醒", MB_OK);
					else
						number = global_scheme_list->num;
					display_flag = TRUE;
				}

				if( display_flag == TRUE )//汇总	
				{
					if( select_bt != SCHEME_DISP_NUM )
					{
						activeflag[select_bt] = UNACTIVE;	
						RepaintWindow( bt_list[count], BS_INVERT );//清按钮的反色区
						select_bt = SCHEME_DISP_NUM;
					}
		
					if( history_flag == FALSE )
					{
						GetDate( &com_date );
						if( day_flag == TRUE )//重新获取当天的提醒记录
						{
							FreeDBList( &global_scheme_list, &number );
							time = ReadCurSchemeList();	//读取当天的未提醒记录
							if( global_scheme_list == NULL )
								msgbox = MessageBox( mainwin, "电子秘书读入当天提醒失败!", "友情提醒", MB_OK);
							else
								number = global_scheme_list->num;
						
							if( number > MAX_INPUT_SCHEME )//获取当天的所有提醒记录(小于MAX_INPUT_SCHEME)
								number = MAX_INPUT_SCHEME;

							//填写日期栏
							SelectListBox( year_list, (U8)(time.year-2000-1) );
							SelectListBox( month_list, (U8)(time.month-1) );
							SelectListBox( day_list, (U8)(time.day-1) );
//							EnableWindow( bt_day, FALSE );	//当日键为disable						
						}else{
//							if( ( com_date.year == time.year ) && ( com_date.month == time.month ) && ( com_date.day == time.day ) )
//								EnableWindow( bt_day, FALSE );	//当日键为disable						
//							else
//								EnableWindow( bt_day, TRUE );	//当日键为enable						
						}
					}else{
//						EnableWindow( bt_day, TRUE );	//当日键为enable
					}

					
					low = 0;
					if( number <= SCHEME_DISP_NUM )
					{
						high = 0;
						endp = number;
					}else{
						high = (U16)(number - SCHEME_DISP_NUM);
						endp = SCHEME_DISP_NUM;
					}
					startp = 0;
					SetScrollRange( scroll, low, high );
					SetScrollPos( scroll, startp, 0, 0 );

					memset( suffix_in_disp, EOD, SCHEME_DISP_NUM*sizeof(U16) );
					for( i = 0; ( i < SCHEME_DISP_NUM ) && ( (startp+i) < number ); i++ )	//获得要显示的记录号
						suffix_in_disp[i] = startp+i;

					SchemeDisplayList( suffix_in_disp, bt_alarm, bt_list, 0 );	
					
					display_flag = FALSE;
					history_flag = FALSE;
					day_flag = FALSE;
				}
				break;
			case	WM_VSCROLL:
				if(Msg.lparam == scroll)
				{
					if( startp == 0 )	topdir = TRUE;
					if( endp == number )	enddir = TRUE;

					switch( Msg.wparam )
					{
						case	SB_LINEDOWN:
								startp++;
								endp++;
								break;
						case	SB_LINEUP:
								startp--;
								endp--;
								break;										
						case	SB_PAGEDOWN:
								startp += SCHEME_DISP_NUM;
								endp += SCHEME_DISP_NUM;
								break;										
						case	SB_PAGEUP:
								startp -= SCHEME_DISP_NUM;
								endp -= SCHEME_DISP_NUM;
								break;
						case	SB_ENDSCROLL :
								startp = (U8)GetScrollPos(scroll,0,0,0);
								endp = startp - SCHEME_DISP_NUM;
								break;
						default :
								break;
					}
														    
					low = 0;
					if( number > SCHEME_DISP_NUM )
					{
						high = number - SCHEME_DISP_NUM;
						if( (S16)(startp) < 0 )	      startp = 0;
						if( startp > high )		startp = high;		
						endp = startp + SCHEME_DISP_NUM;
					}else{
						high = 0;
						startp = 0;
						endp = number;
					}

					if(topdir==TRUE)
						if( startp != 0 ) topdir = FALSE;
					if( enddir == TRUE )
						if( endp != number ) enddir = FALSE;
					SetScrollRange( scroll, low, high );
					
					if( ( topdir == FALSE ) && ( enddir == FALSE ) )
					{

						SetScrollPos( scroll, startp, 0, 0 ); 
						if( select_bt != SCHEME_DISP_NUM)       //移动的时候需要使原来选择的记录返黑
						{
							RepaintWindow( bt_list[select_bt], BS_INVERT );
							activeflag[select_bt] = UNACTIVE;
							select_bt = SCHEME_DISP_NUM;
						}
						memset( suffix_in_disp, EOD, SCHEME_DISP_NUM*sizeof(U16) );
						for( i = 0; ( i < SCHEME_DISP_NUM ) && ( (startp+i) < number ); i++ )	//获得要显示的记录号
							suffix_in_disp[i] = startp+i;
						SchemeDisplayList( suffix_in_disp, bt_alarm, bt_list, 0 );
					}

				}
				break;
			case	WM_QUIT:
					quit = TRUE;
					break;	
			}
			DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam); 		
	}
	
	FreeDBList( &global_scheme_list, &number );
	ClearRec( pGC, WHITE,3,68,140,146,REPLACE_STYLE );
	CreateWindow(WNDCLASS_STATIC, "正在保存中,请等待...", WS_CHILD|SS_TEXT, 30,100,80,60,mainwin,0,NULL);		
	if( DetachDataBase( schemelacb ) != DB_OK )
		msgbox = MessageBox(mainwin, "数据库断开失败!", "友情提醒", MB_OK|MB_ICONERROR);
	DestroyWindow(mainwin);
	EndofTask();
}

⌨️ 快捷键说明

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