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

📄 syswindow.c

📁 在优龙fs2410开发板上做的电子琴
💻 C
字号:
/*
*********************************************************************************************************
*                                   Samsung ARM S3C2410 Software Frame
*
*                          			(c) Copyright 2008-2010, LastRitter
*                                           All Rights Reserved
*
* File : 
* By   : LastRitter
*********************************************************************************************************
*/
#include "SystemTool.h"	   

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
window sta_Window[SW_WINDOW_MAX+1];



/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
void SW_StructInit(window *pstWindow)
{
	pstWindow->uiX		=SW_DEF_X;
	pstWindow->uiY		=SW_DEF_Y;
	pstWindow->uiWidth	=SW_DEF_WIDTH;
	pstWindow->uiHigh	=SW_DEF_HIGH;
	pstWindow->uiStyple	=SW_DEF_STYPLE;
	pstWindow->stFront	=SW_DEF_FRONT;
	pstWindow->stBack	=SW_DEF_BACK;
	pstWindow->scTitle	=SW_DEF_TITLE;
		
	pstWindow->uiParent	=SW_DEF_PARENT;
	pstWindow->uiChild	=SW_DEF_CHILD;
	pstWindow->uiHandle	=SW_DEF_HANDLE;
	pstWindow->uiApp	=SW_DEF_APP;
	
	pstWindow->CallBack	=SW_DEF_CALLBACK;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_CreateWindow(window *pstWindow)
{
	uint16 uiCount;

	for(uiCount=1;uiCount<SW_WINDOW_MAX;uiCount++)
	{
		if(sta_Window[uiCount].uiHandle==0)
		{
			sta_Window[uiCount].uiX		=pstWindow->uiX;
			sta_Window[uiCount].uiY		=pstWindow->uiY;
			sta_Window[uiCount].uiWidth	=pstWindow->uiWidth;
			sta_Window[uiCount].uiHigh	=pstWindow->uiHigh;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
			sta_Window[uiCount].stFront	=pstWindow->stFront;
			sta_Window[uiCount].stBack	=pstWindow->stBack;
			sta_Window[uiCount].scTitle	=pstWindow->scTitle;
			sta_Window[uiCount].uiStyple=pstWindow->uiStyple;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
			sta_Window[uiCount].uiState	=pstWindow->uiState;

			sta_Window[uiCount].uiParent=pstWindow->uiParent;
			sta_Window[uiCount].uiChild	=pstWindow->uiChild;

			sta_Window[uiCount].CallBack=pstWindow->CallBack;

			sta_Window[uiCount].uiHandle=uiCount;
			sta_Window[uiCount].uiApp=pstWindow->uiApp;
			
			sta_Window[uiCount].CallBack(uiCount,0,0,SW_WINDOW_INIT);
			
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>								
			return uiCount;
		}
	}
	
	UART_TextOut("Can not Create More Window\n");
	return 0;	
}
 
/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_DeleteWindow(uint16 uiHandle)
{
	if(uiHandle==0||uiHandle>=SW_WINDOW_MAX)
	{
		UART_TextOut("Error handle.\n");
		return 1;
	}
	
	if(sta_Window[uiHandle].CallBack)
	{
		sta_Window[uiHandle].CallBack(uiHandle,0,0,SW_WINDOW_EXIT);
	}
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(SW_HideWindow(uiHandle))
	{
		UART_TextOut("Can't hide this window.(SW_DeleteWindow)\n");
		return 1;
	}
		
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>								
	if(sta_Window[uiHandle].uiStyple!=SW_STYPLE_MAIN&&
			sta_Window[uiHandle].uiStyple!=SW_STYPLE_TASKBAR)
	{
		SW_DeleteDock(uiHandle);
    }
    else
    {
    	UART_TextOut("Can't Delete Task bar and Man window.(SW_DeleteWindow)\n");
    	return 1;
    }
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	sta_Window[uiHandle].uiHandle=0;
	sta_Window[uiHandle].CallBack=NULL;
	
	SW_StructInit(&sta_Window[uiHandle]);
	
	sta_Window[uiHandle].stMessageGroup->uiCurMessage=0;
	
	return 0;	
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_CreateWindowEx(uint16 uiApp,char *pstTitle,void (*CallBack)(uint16,uint16,uint16,uint16),
			uint16 uiX,uint16 uiY,uint16 uiWidth,uint16 uiHigh)
{
	uint16 uiHandle;
//	uint16 uiCount;
	window stWindow;
	
	if((uiX+uiWidth)>SW_XMAX||(uiY+uiHigh)>SW_YMAX)
		return 0;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_StructInit(&stWindow);
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(uiX!=0||uiY!=0||uiWidth!=0||uiHigh!=0)
	{
		stWindow.uiX=uiX;
		stWindow.uiY=uiY;
		stWindow.uiWidth=uiWidth;
		stWindow.uiHigh=uiHigh;
	}
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	stWindow.scTitle=pstTitle;
	stWindow.CallBack=CallBack;
	stWindow.uiApp=uiApp;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiHandle=SW_CreateWindow(&stWindow);
	
//	UART_TextOut("App %d",uiApp);
//	for(uiCount=0;uiCount<SW_WINDOW_MAX;uiCount++)
//		UART_TextOut("C %d ",sta_Window[uiCount].uiApp);	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>								
	SW_AddDock(uiHandle);

	return uiHandle;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_SetColour(uint16 uiHandle,colour stFront,colour stBack)
{
	sta_Window[uiHandle].stFront=stFront;
	sta_Window[uiHandle].stBack=stBack;
	
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_SetStyple(uint16 uiHandle,uint16 uiStyple)
{
	uint16 uiTemp=sta_Window[uiHandle].uiStyple;

	sta_Window[uiHandle].uiStyple=uiStyple;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	switch(uiStyple)
	{
		case SW_STYPLE_FULL:
		case SW_STYPLE_MAIN:
			sta_Window[uiHandle].uiX=0;
			sta_Window[uiHandle].uiY=0;
			sta_Window[uiHandle].uiWidth=SW_XMAX;
			sta_Window[uiHandle].uiHigh =SW_YMAX;
			break;
		case SW_STYPLE_TASKBAR:
			sta_Window[uiHandle].uiX=0;
			sta_Window[uiHandle].uiY=(SW_YMAX-SW_DEF_TASKBAR_HIGH);
			sta_Window[uiHandle].uiWidth=SW_XMAX;
			sta_Window[uiHandle].uiHigh =SW_DEF_TASKBAR_HIGH;
			break;
		default:break;
	}

	return uiTemp;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
const window *SW_GetWindowInfo(uint16 uiHandle)
{
	if(uiHandle==0||uiHandle>=SW_WINDOW_MAX||sta_Window[uiHandle].uiHandle!=uiHandle)
	{
		UART_TextOut("Error handle %d.(SW_GetWindowInfo)\n",uiHandle);
		return 0;
	}
	return &sta_Window[uiHandle];
}

⌨️ 快捷键说明

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