📄 wordtest.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 + -