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

📄 sysalm.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 C
字号:
#include <string.h>

#include <asixwin.h>
#include <asixapp.h>
#include <resource\bitmap.h>

//**********************TASKDESCRIPTION*********************
DWORD	SysAlarmStk[STACK_SIZE];

extern void SystemAlarm( void );

TASKDESCRIPTION SysAlarmTskDesp =
{"系统警告",	ASIX_SERVICE,	NOT_IN_ANYGROUP,	NULL,	STACK_SIZE,	1,	PHY_LCD_W,	PHY_LCD_H,	SystemAlarm,	SERVICE_PRI};

TASKDESCRIPTIONLIST	SysAlarmTskDespLst =
{NULL,	NULL,	&SysAlarmTskDesp, SYSALMSERVER_ID, SysAlarmStk};

#define SYS_ALARM	0

void SystemAlarm( void )
{
	MSG		msg;
	U32		mainwin;
	U32		bt_ok;
	U32		st;
	
	const	U16		form_w = PHY_LCD_W*2/3, form_h = PHY_LCD_H/3, form_x = PHY_LCD_W/6, form_y = ( PHY_LCD_H - form_h )/2;
	const	U16		st_w = form_w - 8, st_h = 30, st_x = form_x + 4, st_y = form_y + 22;
	const	U16		bt_w = 48, bt_h = 20, bt_x = form_x + ( form_w - bt_w )/2, bt_y = form_y + form_h - bt_h - 5;

	mainwin = CreateWindow(	WNDCLASS_WIN,			
							"系统警告",			
							WS_POPUPWINDOW,
							form_x,form_y,				
							form_w,form_h,
							0,				
							0,				
							NULL);
	st = CreateWindow( WNDCLASS_STATIC,
					"确认",
					WS_CHILD | SS_TEXT | SS_MULTILINE,
					st_x,st_y,
					st_w,st_h,
					mainwin,
					0,
					NULL);
	bt_ok = CreateWindow( WNDCLASS_BUTTON,
					"确认",
					WS_CHILD | BS_REGULAR,
					bt_x,bt_y,
					bt_w,bt_h,
					mainwin,
					0,
					NULL);

	while( 1 )
	{
 		ASIXGetMessage( &msg, NULL, 0, 0 );

		switch( msg.message )
		{
			case WM_ALARM:
				switch( msg.wparam )
				{			
					case SYS_ALARM:
						{
							char	*warning_str = (char *)msg.data;
							
							if( warning_str != NULL )
							{	
								SetWindowText( st, warning_str, NULL );
								PopUpWindow( mainwin, 0 );
							}
						}
						break;
				}
				break;
			case WM_COMMAND:
				if( msg.lparam == bt_ok )
				{
					MSG	switchmsg;

					switchmsg.messageType = ASIX_MESSAGE;		//切换窗口
					switchmsg.message = SM_SWITCH;
					switchmsg.lparam = SYSALMSERVER_ID;
					switchmsg.wparam = SWAP_TO_BACKGROUND;
					SysSendMessage( SYSTASK_ID, &switchmsg );
				}
				break;
			default:
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
	}

}

void SendSysAlarm( char *str )
{
	MSG	msg;

	if( str == NULL || *str == '\0' )
		return;

	msg.messageType = ASIX_MESSAGE;
	msg.message = WM_ALARM;
	msg.wparam = SYS_ALARM;
	msg.data = str;

	SysSendMessage( SYSALMSERVER_ID, &msg );

	return;
}

⌨️ 快捷键说明

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