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

📄 wordtest.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
字号:
/*
 * This WordTest.c use to create the main window and show the list, 
 * and to response the use's click. Depending on user's click, call
 * ListTest() to list the test
 */


#include <stdio.h>
#include <string.h> 


#include <sys\sysusr.h>
#include <sys\sysmsg.h>


#include <asixwin.h>
#include <asixapp.h>
#include <asixwin\asix_ed.h>
#include <asixwin\asix_tb.h>
#include <ctype.h>


#include <resource\bitmap.h>

#include "WordM1.h"
#include "List.h"
#include "WordMem.h"
#include "WordTest.h"


          
//外部变量的申明 
extern LEVEL Lev4,Lev6,LevM;
extern unsigned	char	*pTestBuf[MAXWORDNUM];
extern unsigned	char	*pAnswerBuf[MAXWORDNUM];
/*******************************************************************
* Function: 	ForthLevTest()
*
* Parameter: 	void
*
* Description:	This Function use to create the window of Forth Level 
*				English Test,and show the test in a list
*
* returns:	 
*
*********************************************************************/
int ForthLevTest( void )
{	
	//窗口和控件ID
	U32 Test4mainwin;
	U32 Test4tskbar;
	U32 Test4ListButton[MAXWORDLIST];
	U32 Test4StrollBar;
	U32 Button;
	
	//函数变量
	MSG msg;
	U8 quit = 0;
	int i,margin = 5;
	S16     row = 1;
	S16     dragflag = 0;
	char ListBuf[WM_LIST_NUM][MAXLISTCHARNUM];
	int counter;
	//按钮创建
	Test4mainwin = CreateWindow(WNDCLASS_WIN,
								"单元选择",
								WS_OVERLAPPEDWINDOW,
								0, 0,
								LCD_WIDTH,
								LCD_HEIGHT,
								0,
								0,
								NULL);
	Test4tskbar = CreateWindow( WNDCLASS_TSKBAR,
								NULL,
								WS_CHILD|TBS_TYPICAL,
								0, 0, 0, 0,
								Test4mainwin,
								0,
								NULL );
	for(i = 0; i < WM_LIST_NUM; i++)
	{
		Test4ListButton[i] = CreateWindow( 	WNDCLASS_BUTTON,
											NULL,
										   	WS_CHILD|BS_BOARD,
										   	margin,
										   	LCD_HEIGHT/8+i*20,
										   	LCD_WIDTH - 2*margin - 20,
										   	20,
										   	Test4mainwin,
										   	0,
										   	NULL );
	} 

	Test4StrollBar = CreateWindow( 	WNDCLASS_SCROLL,
									NULL,
									WS_CHILD|SBS_VERT,
								   	LCD_WIDTH - margin - 20,
								   	LCD_HEIGHT/8,
								   	20,
								   	WM_LIST_NUM*20,
								   	Test4mainwin,
								   	MAKELONG(1, Lev4.Lindex - WM_LIST_NUM + 1),
								   	NULL);
	
	for(i = 0; i < WM_LIST_NUM; i++ )
	{
		sprintf(ListBuf[i], "%s%d%c", "List", i + row, '\0');
		SetWindowText(Test4ListButton[i], ListBuf[i] , NULL);
	}	

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		switch(msg.message)
		{
			case WM_PENDOWN:
				for(i = 0; i < WM_LIST_NUM; i++) /*判断点击哪个列表并显示测试*/
				{
					if(msg.lparam == Test4ListButton[i])
					{
						counter = FindWord(4,i+row);
						ListTest(4,i+row,counter);
					}
				}
				break;

			case WM_VSCROLL:
				if(msg.lparam == Test4StrollBar)
				{
					switch(msg.wparam)
					{
						case SB_PAGEUP:
							row -= WM_LIST_NUM;
							if(row < 1)
					   			row = 1;
							break;

						case SB_PAGEDOWN:
							row += WM_LIST_NUM;
							if(row > (Lev4.Lindex - WM_LIST_NUM + 1))
							   row = (Lev4.Lindex - WM_LIST_NUM + 1);
							break;
			
						case SB_LINEUP:
							row -= 1;
							if(row < 1)
						   		row = 1;
							break;

						case SB_LINEDOWN:
							row += 1;
							if(row > (Lev4.Lindex - WM_LIST_NUM + 1))
						   		row = (Lev4.Lindex - WM_LIST_NUM + 1);
							break;
						
						case SB_THUMBTRACK:
							dragflag = 1; 
							break;
						
						case SB_ENDSCROLL:
							row = GetScrollPos(Test4StrollBar,0,0,0);
							dragflag = 0;
							break;
					}

					if(!dragflag)
					{
						SetScrollPos(Test4StrollBar,row,0,0); /* 滚动条拖动定位 */
			
						//显示的更新
						for(i = 0; i < WM_LIST_NUM; i++)
						{
						   	sprintf(ListBuf[i],"%s%d%c", "List", row + i, '\0');
							SetWindowText( Test4ListButton[i],
						   				   ListBuf[i],
						   				   NULL);
					   	}	
						SetScrollRange( Test4StrollBar, 1,
										(U16)(Lev4.Lindex - WM_LIST_NUM + 1));
						SetScrollPos(Test4StrollBar, (U16)(row + 1), 0,0);
					}
				}
				break;

			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
	}
	DestroyWindow( Test4mainwin );

}


/*******************************************************************
* Function: 	SixthLevTest()
*
* Parameter: 	void
*
* Description:	This Function use to create the window of Sixth Level 
*		English Test,and show the test in a list
*
* returns:	
*
*********************************************************************/

int SixLevTest( void )
{
	//窗口和控件ID
	U32 Test6mainwin;
	U32 Test6tskbar;
	U32 Test6ListButton[MAXWORDLIST];
	U32 Test6StrollBar;
	U32 Button;
	
	//函数变量
	MSG		msg;
	U8		quit = 0;
	int		i,margin = 5;
	S16     row = 1;
	S16     dragflag = 0;
	char ListBuf[WM_LIST_NUM][MAXLISTCHARNUM];
	int		counter;
	//按钮创建
	Test6mainwin = CreateWindow(WNDCLASS_WIN,
								"单元选择",
								WS_OVERLAPPEDWINDOW,
								0, 0,
								LCD_WIDTH,
								LCD_HEIGHT,
								0,
								0,
								NULL);
	Test6tskbar = CreateWindow( WNDCLASS_TSKBAR,
								NULL,
								WS_CHILD|TBS_TYPICAL,
								0, 0, 0, 0,
								Test6mainwin, 
								0,
								NULL);
	for(i = 0; i < WM_LIST_NUM; i++)
	{
		Test6ListButton[i] = CreateWindow( 	WNDCLASS_BUTTON,
											NULL,
										   	WS_CHILD|BS_BOARD,
										   	margin,
										   	LCD_HEIGHT/8+i*20,
										   	LCD_WIDTH - 2*margin - 20,
										   	20,
										   	Test6mainwin,
										   	0,
										   	NULL );
	} 
	
	Test6StrollBar = CreateWindow( 	WNDCLASS_SCROLL,
									NULL,
								   	WS_CHILD|SBS_VERT,
								   	LCD_WIDTH - margin - 20,
								   	LCD_HEIGHT/8,
								   	20,
								   	WM_LIST_NUM*20,
								   	Test6mainwin,
								   	MAKELONG(1, Lev6.Lindex - WM_LIST_NUM + 1),
									NULL);
								   	
for(i = 0; i < WM_LIST_NUM; i++ )
	{
		sprintf(ListBuf[i], "%s%d%c", "List", i + row, '\0');
		SetWindowText(Test6ListButton[i], ListBuf[i] , NULL);
	}	

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		switch(msg.message)
		{
			case WM_PENDOWN:
				for(i = 0; i < WM_LIST_NUM; i++) /*判断点击哪个列表并显示测试*/
				{
					if(msg.lparam == Test6ListButton[i])
					{
						counter = FindWord(6,i+row);
						ListTest(6,i+row,counter);
					}
				}
				break;

			case WM_VSCROLL:
				if(msg.lparam == Test6StrollBar)
				{
					switch(msg.wparam)
					{
						case SB_PAGEUP:
							row -= WM_LIST_NUM;
							if(row < 1)
							   	row = 1;
							break;

						case SB_PAGEDOWN:
							row += WM_LIST_NUM;
							if(row > (Lev6.Lindex - WM_LIST_NUM + 1))
						   		row = (Lev6.Lindex - WM_LIST_NUM + 1);
							break;
						
						case SB_LINEUP:
							row -= 1;
							if(row < 1)
							   	row = 1;
							break;

						case SB_LINEDOWN:
							row += 1;
							if(row > (Lev6.Lindex - WM_LIST_NUM + 1))
						   		row = (Lev6.Lindex - WM_LIST_NUM + 1);
							break;

						case SB_THUMBTRACK:
							dragflag = 1;
							break;
						
						case SB_ENDSCROLL:
							row = GetScrollPos(Test6StrollBar,0,0,0);
							dragflag = 0;
							break;
					}

					if(!dragflag)
					{
						SetScrollPos(Test6StrollBar,row,0,0); /*滚动条拖动定位*/
					
					//显示的更新
						for(i = 0; i < WM_LIST_NUM; i++)
						{
						   	sprintf(ListBuf[i],"%s%d%c", "List", row + i, '\0');
							SetWindowText( Test6ListButton[i],
						   				   ListBuf[i],
						   				   NULL);
					   	}	
						SetScrollRange( Test6StrollBar,
										1,
									    (U16)(Lev6.Lindex - WM_LIST_NUM + 1));
						SetScrollPos(Test6StrollBar, (U16)(row + 1), 0,0);
					}
				}
				break;

			case WM_QUIT:
				quit = 1;
				break; 
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
	}
	DestroyWindow( Test6mainwin );
	
	return counter;
}

/*******************************************************************
* Function: 	MasterLevTest()
*
* Parameter: 	void
*
* Description:	This Function use to create the window of Master Level 
*		English Test,and show the test in a list
*
* returns:	
*
*********************************************************************/
int MasterLevTest( void )
{
	//窗口和控件ID
	U32 TestMmainwin;
	U32 TestMtskbar;
	U32 TestMListButton[MAXWORDLIST];
	U32 TestMStrollBar;
	U32 Button;
	
	//函数变量
	MSG msg;
	U8 quit = 0;
	int i,margin = 5;
	S16     row = 1;
	S16     dragflag = 0;
	char ListBuf[WM_LIST_NUM][MAXLISTCHARNUM];
	int		counter;
	//按钮创建
	TestMmainwin = CreateWindow(WNDCLASS_WIN,
								"单元选择",
								WS_OVERLAPPEDWINDOW,
								0, 0,
								LCD_WIDTH,
								LCD_HEIGHT,
								0,
								0,
								NULL);
	TestMtskbar = CreateWindow( WNDCLASS_TSKBAR,
								NULL, WS_CHILD|TBS_TYPICAL,
								0, 0, 0, 0,
								TestMmainwin,
								0,
								NULL);
	for(i = 0; i < WM_LIST_NUM; i++)
	{
		TestMListButton[i] = CreateWindow( 	WNDCLASS_BUTTON,
										 	NULL,
										   	WS_CHILD|BS_BOARD,
										   	margin,
										   	LCD_HEIGHT/8+i*20,
										   	LCD_WIDTH - 2*margin - 20,
										   	20,
										   	TestMmainwin,
										   	0, 
										   	NULL);
	} 
	
	TestMStrollBar = CreateWindow( 	WNDCLASS_SCROLL,
									NULL,
									WS_CHILD|SBS_VERT,
								   	LCD_WIDTH - margin - 20,
								   	LCD_HEIGHT/8,
								   	20,
								   	WM_LIST_NUM*20,
								   	TestMmainwin,
								   	MAKELONG(1, LevM.Lindex - WM_LIST_NUM + 1),
								   	NULL);
	for(i = 0; i < WM_LIST_NUM; i++ )
	{
		sprintf(ListBuf[i], "%s%d%c", "List", i + row, '\0');
		SetWindowText(TestMListButton[i], ListBuf[i] , NULL);
	}	

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		switch(msg.message)
		{
			case WM_PENDOWN:
				for(i = 0; i < WM_LIST_NUM; i++)/*判断点击哪个列表并显示测试*/
				{
					if(msg.lparam == TestMListButton[i])
					{
						counter = FindWord(10,i+row);
						ListTest(10,i+row,counter);
					}
				}
				break;
	
	
			case WM_VSCROLL:
				if(msg.lparam == TestMStrollBar)
				{
					switch(msg.wparam)
					{
						case SB_PAGEUP:
							row -= WM_LIST_NUM;
							if(row < 1)	
							   	row = 1;
							break;
	
						case SB_PAGEDOWN:
							row += WM_LIST_NUM;
							if(row > (LevM.Lindex - WM_LIST_NUM + 1))
						   		row = (LevM.Lindex - WM_LIST_NUM + 1);
							break;
	
						case SB_LINEUP:
							row -= 1; 
							if(row < 1)
							   row = 1;
							break;
	
						case SB_LINEDOWN:
							row += 1;
							if(row > (LevM.Lindex - WM_LIST_NUM + 1))
							   	row = (LevM.Lindex - WM_LIST_NUM + 1);
							break;
	
						case SB_THUMBTRACK:
							dragflag = 1;
							break;
	
						case SB_ENDSCROLL:
							row = GetScrollPos(TestMStrollBar,0,0,0);
							dragflag = 0;
							break;
					}
					
					if(!dragflag)
					{
						SetScrollPos(TestMStrollBar,row,0,0);/* 滚动条拖动定位*/
					
						//显示的更新
						for(i = 0; i < WM_LIST_NUM; i++)
						{
						   	sprintf(ListBuf[i],"%s%d%c", "List", row + i, '\0');
							SetWindowText( TestMListButton[i],
						   				   ListBuf[i],
						   				   NULL);
					   	}	
						SetScrollRange( TestMStrollBar,
										1,
										(U16)(LevM.Lindex - WM_LIST_NUM + 1));
						SetScrollPos(TestMStrollBar, (U16)(row + 1), 0,0);
					}
				}
				break;
	
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
	}
	DestroyWindow( TestMmainwin );

	return counter;
}

⌨️ 快捷键说明

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