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

📄 syscnfg.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 C
📖 第 1 页 / 共 2 页
字号:
								mainwin,0,lb_cap[i]);
		SelectListBox( lb[i], temp_value[i] );
		temp += st_h + 8;
	}

	bt_ok = CreateWindow( WNDCLASS_BUTTON, 
							"确定", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							bt_x,bt_y,
							bt_w,bt_h,
							mainwin,0,NULL);
	bt_cancel = CreateWindow( WNDCLASS_BUTTON, 
							"取消", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							(U16)(bt_x + bt_w),bt_y,
							bt_w,bt_h,
							mainwin,0,NULL);

	SetFocus( bt_ok );
	
	while( !quit )
	{
		ASIXGetMessage( &msg, NULL, 0, 0 );
		switch( msg.message )
		{			
			case WM_COMMAND:
				if( msg.lparam == bt_ok )
				{
					// 保存设置
					for( i = 0; i < 4; i++ )
					{
						UartCnfgValue[i] = temp_value[i];
					}
					ChangeUartConfig( UART0 );
					quit = 1;
				}
				else if( msg.lparam == bt_cancel )
				{
					quit = 1;
				}
				break;
			case WM_LISTBOX:
				for( i = 0; i < 4; i++ )
				{
					if( msg.lparam == lb[i] )
					{
						temp_value[i] = (BYTE)msg.wparam;
						break;
					}
				}
				break;
			case WM_KEYDOWN:
			case WM_KEYUP:
				// 切换焦点
				switch( msg.wparam )
				{
					case ASIX_KEY_UP:
					case ASIX_KEY_LEFT:
					case ASIX_KEY_DOWN:
					case ASIX_KEY_RIGHT:
						if( msg.lparam == bt_ok )
							SetFocus( bt_cancel );
						else if( msg.lparam == bt_cancel )
							SetFocus( bt_ok );
						break;
				}
				break;
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}
	
	DestroyWindow( mainwin );
	EndofTask();
}

// 声音设置任务
void ConfigAudio( void )
{
	MSG 	msg;
	U8		quit = 0;
//	U32		hGC;

 	// 窗口和控件ID
	U32		mainwin;		// 主窗口
	U32		bt_inc, bt_dec;	// 音量调节按键
	U32		bt_ok;			// 确定键
	U32		bt_cancel;		// 取消键
	U32		bt_prompt;		// 设置提示音
	U32		st_prompt;		// 音量选项提示
	U32		bt_volume;		// 音量值
	U32		snd_dip;		// 按键音和触屏音开关
	U32		tskbar;			// 任务栏

	SL_ITEM dip_item[]=
	{
		SL_UNCHECKED,	"按键音",
		SL_UNCHECKED,	"触屏音",
		0,				NULL,
	};

	U16		temp;
	
	S8		*stcap = "音量调节";
	S8		value_str[6];
	BYTE	temp_value[3];
	
	// WINDOW ARRANGEMENT
	const	U16		form_w = PHY_LCD_W, form_h = PHY_LCD_H, form_x = 0, form_y = 0;
	const	U16		st_w = 60, st_h = 24, st_x = form_x + 5, st_y = form_y + 20 + ( form_h - 88 - st_h * 4 )/2;
	const	U16		bt_w = 24, bt_h = 24, bt_x = st_x, bt_y = st_y;
	const	U16		st_w2 = LCD_WIDTH-58, st_x2 = bt_x + bt_w, bt_x2 = LCD_WIDTH - 29;
	const	U16		bt_w3[3] = { LCD_WIDTH/3, LCD_WIDTH*1/3, LCD_WIDTH - LCD_WIDTH*2/3 }, bt_h3 = LCD_HEIGHT/10, bt_x3[3] = { 1, LCD_WIDTH/3, LCD_WIDTH*2/3 }, bt_y3 = form_y + PHY_LCD_H - 20 - bt_h3;
	const	U16		sl_w = 72, sl_h = 60;

	mainwin = CreateWindow(	WNDCLASS_WIN,			
					"声音设置",			
					WS_OVERLAPPEDWINDOW,
					form_x,form_y,				
					form_w,form_h,
					0,				
					0,				
					NULL);			
	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
	
	temp = st_y;

	// 获取初始音量设置
	sprintf( value_str, "%d", AudioCnfgValue[0] );
	temp_value[0] = AudioCnfgValue[0];

	// 音量提示
	st_prompt = CreateWindow( WNDCLASS_STATIC, 
							stcap, 
							WS_CHILD | SS_TEXT | SS_RIGHT,
							st_x,temp,
							st_w,st_h,
							mainwin,0,NULL);
	temp += st_h + 8;
	
	// 减少键
	bt_dec = CreateWindow( WNDCLASS_BUTTON, 
							NULL,//"-", 
							WS_CHILD | BS_ICON | BS_FLAT,
							bt_x,temp,
							bt_w,bt_h,
							mainwin,0,(char *)left10X10);
	EnableFocus( bt_dec, FALSE );	// 屏蔽焦点
	
	// 音量值
	bt_volume = CreateWindow( WNDCLASS_BUTTON, 
							value_str, 
							WS_CHILD | BS_BOARD | BS_FLAT,
							st_x2,temp,
							st_w2,st_h,
							mainwin,0,NULL);
	// 增加键
	bt_inc = CreateWindow( WNDCLASS_BUTTON, 
							NULL,//"+", 
							WS_CHILD | BS_ICON | BS_FLAT,
							bt_x2,temp,
							bt_w,bt_h,
							mainwin,0,(char *)right10X10);
	EnableFocus( bt_inc, FALSE );	// 屏蔽焦点

	temp += bt_h + 16;
 
	// 按键音和触屏音开关
	snd_dip = CreateWindow( WNDCLASS_SELECT, 
							NULL, 
							WS_CHILD | SLS_CHECKBOX | SLS_ENABLE,
							st_x,temp,
							sl_w,sl_h,
							mainwin,0,dip_item);
	
	temp += sl_h + 16;

	bt_ok = CreateWindow( WNDCLASS_BUTTON, 
							"确定", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							bt_x3[0],bt_y3,
							bt_w3[0],bt_h3,
							mainwin,0,NULL);
	bt_prompt = CreateWindow( WNDCLASS_BUTTON, 
							"提示音", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							bt_x3[1],bt_y3,
							bt_w3[1],bt_h3,
							mainwin,0,NULL);
	bt_cancel = CreateWindow( WNDCLASS_BUTTON, 
							"取消", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							bt_x3[2],bt_y3,
							bt_w3[2],bt_h3,
							mainwin,0,NULL);

	SetFocus( bt_volume );
	
	while( !quit )
	{
		ASIXGetMessage( &msg, NULL, 0, 0 );
		switch( msg.message )
		{			
			case WM_COMMAND:
				if( msg.lparam == bt_dec )
				{	
					// 减少值
					if( temp_value[0] == 0 )
						break;

					temp_value[0]--;
					sprintf( value_str, "%d", temp_value[0] );
					SetWindowText( bt_volume, value_str, NULL );
					if( GetFocus() != bt_volume )
						SetFocus( bt_volume );
					break;
				}
				else if( msg.lparam == bt_inc )
				{	
					// 增加值
					//if( temp_value[i] == VALUE_MAX )
					//	break;

					temp_value[0]++;
					sprintf( value_str, "%d", temp_value[0] );
					SetWindowText( bt_volume, value_str, NULL );
					if( GetFocus() != bt_volume )
						SetFocus( bt_volume );
					break;
				}
				else if( msg.lparam == bt_ok )
				{
					int	i;

					// 保存设置
					for( i = 0; i < 3; i++ )
						AudioCnfgValue[i] = temp_value[i];
					quit = 1;
				}
				else if( msg.lparam == bt_cancel )
				{
					// 恢复设置
					quit = 1;
				}
				else if( msg.lparam == bt_prompt )
				{
					// 设置提示音
					ConfigPromptSound();
				}
				break;
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}
	
	DestroyWindow( mainwin );
	EndofTask();
}

// 提示音设置
void ConfigPromptSound( void )
{
	MSG 	msg;
	U8		quit = 0;
//	U32		hGC;

 	// 窗口和控件ID
	U32		mainwin;		// 主窗口
	U32		lb[4];			// 配置选项列表
	U32		bt_ok;			// 确定键
	U32		bt_cancel;		// 取消键
	U32		st[4];			// 选项提示
	U32		tskbar;			// 任务栏

	S8		*stcap[4] = { "电话提示音", "短信提示音", "约会提示音", "警告提示音" };
	struct LBOX_ITEM	lb_phone[] =
	{	
		ICON_ENABLE,	UNUNDERLINE,	"无",
		ICON_END,		UNUNDERLINE,	NULL
	};
	struct LBOX_ITEM	lb_sms[] =
	{	
		ICON_ENABLE,	UNUNDERLINE,	"无",
		ICON_END,		UNUNDERLINE,	NULL
	};
	struct LBOX_ITEM	lb_app[] =
	{	
		ICON_ENABLE,	UNUNDERLINE,	"无",
		ICON_END,		UNUNDERLINE,	NULL
	};
	struct LBOX_ITEM	lb_warning[] =
	{	
		ICON_ENABLE,	UNUNDERLINE,	"无",
		ICON_END,		UNUNDERLINE,	NULL
	};

	struct LBOX_ITEM	*lb_cap[4];


	U8		i;
	U16		temp;
	
	BYTE	temp_value[4];
	
	// WINDOW ARRANGEMENT
	const	U16		form_w = PHY_LCD_W, form_h = PHY_LCD_H, form_x = 0, form_y = 0;
	const	U16		st_w = PHY_LCD_W/4, st_h = 24, st_x = form_x + 5, st_y = form_y + 20 + ( form_h - 72 - st_h * 5 )/2;
	const	U16		lb_w = PHY_LCD_W/2, lb_h = st_h, lb_x = st_x + st_w + PHY_LCD_W/6, lb_y = st_y;
	const	U16		bt_w = (PHY_LCD_W-2)/2, bt_h = st_h, bt_x = form_x + 1, bt_y = form_y + PHY_LCD_H - 20 - bt_h;

	lb_cap[0] = lb_phone;
	lb_cap[1] = lb_sms;
	lb_cap[2] = lb_app;
	lb_cap[3] = lb_warning;

	mainwin = CreateWindow(	WNDCLASS_WIN,			
					"提示音方案",			
					WS_OVERLAPPEDWINDOW,
					form_x,form_y,				
					form_w,form_h,
					0,				
					0,				
					NULL);			
	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
	
	temp = st_y;
	for( i = 0; i < 4; i++ )
	{
		temp_value[i] = AudioCnfgValue[i+3];

		// 提示
		st[i] = CreateWindow( WNDCLASS_STATIC, 
								stcap[i], 
								WS_CHILD | SS_TEXT | SS_RIGHT,
								st_x,temp,
								st_w,st_h,
								mainwin,0,NULL);
		// 选项
		lb[i] = CreateWindow( WNDCLASS_LIST, 
								NULL,
								WS_CHILD | LBS_POPUP,
								lb_x,temp,
								lb_w,lb_h,
								mainwin,0,lb_cap[i]);
		SelectListBox( lb[i], temp_value[i] );
		temp += st_h + 8;
	}

	bt_ok = CreateWindow( WNDCLASS_BUTTON, 
							"确定", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							bt_x,bt_y,
							bt_w,bt_h,
							mainwin,0,NULL);
	bt_cancel = CreateWindow( WNDCLASS_BUTTON, 
							"取消", 
							WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
							(U16)(bt_x+bt_w),bt_y,
							bt_w,bt_h,
							mainwin,0,NULL);

	SetFocus( bt_ok );
	
	while( !quit )
	{
		ASIXGetMessage( &msg, NULL, 0, 0 );
		switch( msg.message )
		{			
			case WM_COMMAND:
				if( msg.lparam == bt_ok )
				{
					// 保存设置
					quit = 1;
				}
				else if( msg.lparam == bt_cancel )
				{
					// 恢复设置
					quit = 1;
				}
				break;
			case WM_LISTBOX:
				for( i = 0; i < 4; i++ )
				{
					if( msg.lparam == lb[i] )
					{
						temp_value[i] = (BYTE)msg.wparam;
						break;
					}
				}
				break;
			case WM_KEYDOWN:
			case WM_KEYUP:
				// 切换焦点
				switch( msg.wparam )
				{
					case ASIX_KEY_UP:
					case ASIX_KEY_LEFT:
					case ASIX_KEY_DOWN:
					case ASIX_KEY_RIGHT:
						if( msg.lparam == bt_ok )
							SetFocus( bt_cancel );
						else if( msg.lparam == bt_cancel )
							SetFocus( bt_ok );
						break;
				}
				break;
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}
	
	DestroyWindow( mainwin );
}

// GSM设置任务
void ConfigGSM( void )
{
	U16	bat_vol;

	bat_vol = BatVoltRead();

	EndofTask();
}

⌨️ 快捷键说明

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