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

📄 testasix.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 C
📖 第 1 页 / 共 2 页
字号:
						NULL);
	bt2 = CreateWindow( WNDCLASS_BUTTON,
						"左",
						WS_CHILD | BS_REGULAR,
						20,55,
						32,20,
						mainwin,
						0,
						NULL);
	bt3 = CreateWindow( WNDCLASS_BUTTON,
						"右",
						WS_CHILD | BS_REGULAR,
						20,80,
						32,20,
						mainwin,
						0,
						NULL);
	bt4 = CreateWindow( WNDCLASS_BUTTON,
						"清除",
						WS_CHILD | BS_REGULAR,
						60,30,
						32,20,
						mainwin,
						0,
						NULL);
	bt5 = CreateWindow( WNDCLASS_BUTTON,
						"退格",
						WS_CHILD | BS_REGULAR,
						60,55,
						32,20,
						mainwin,
						0,
						NULL);
	bt6 = CreateWindow( WNDCLASS_BUTTON,
						"删除",
						WS_CHILD | BS_REGULAR,
						60,80,
						32,20,
						mainwin,
						0,
						NULL);
	EnableFocus( bt1, FALSE );
	EnableFocus( bt2, FALSE );
	EnableFocus( bt3, FALSE );
	EnableFocus( bt4, FALSE );
	EnableFocus( bt5, FALSE );
	EnableFocus( bt6, FALSE );
	
	hGC = GetGC();
	
	edit1 = CreateWindow( WNDCLASS_EDITOR,
						"Good!",
//						WS_CHILD | ES_SINGLE_REGULAR,
						WS_CHILD | ES_SINGLELINE | ES_RIGHT,// | ES_NOBORDER,
						10,105,
						100,16,
						mainwin,
						30,
						NULL);
	edit2 = CreateWindow( WNDCLASS_EDITOR,
						NULL,
						WS_CHILD | ES_SINGLE_REGULAR,
						20,130,
						60,20,
						mainwin,
						30,
						NULL);
	SetFocus( edit1 );

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		focusWin = (ASIX_WINDOW *)GetFocus();
		switch(msg.message)
		{
			case WM_COMMAND:
				if( msg.lparam == bt1 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = *((U16 *)key[(i++)%7 ]);
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}else
				if( msg.lparam == bt2 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = MOVE_LEFT;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}else
				if( msg.lparam == bt3 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = MOVE_RIGHT;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
					
				}else
				if( msg.lparam == bt4 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = ESCAPE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
									
					// test code for repaint and focus
					// MessageBox(0,"test", "!!", MB_YESNOCANCEL) ;
				}else
				if( msg.lparam == bt5 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = BACKSPACE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);					
				}else
				if( msg.lparam == bt6 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = DELETE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}
				break;
			
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}

	DestroyWindow( mainwin );

	EndofTask();
}

/********************************************************************
*   Function test_kb()  
*	param in:	void		
*	param out: 	void	
*	description: 测试键盘控件	
********************************************************************/
void test_kb( void )	// test keybar
{
	MSG 	msg;
 	U32		mainwin;
	U32		hGC;
	U32		edit1;
//	U32		edit2;
	U32		keyboard;
 	U8		quit=0;
	U16		wndwidth, wndHeight;
	S8		*text = "第三次改版后的一些重大变化:\n\
*此次改版最重要的变化是增加了一些功能如每月奖项,每日热帖,每日新帖等;\n\
*为鼓励大家的积极性,每月奖项将评出论坛月度的五个奖项;\n\
*每日热帖将列出当天发表或被回复的所有文章,方便大家掌握论坛的最新动态;\n\
*每日新帖将列出当天发表的所有新文章,大家可以一目了然地查看当天的新文章;\n\
*目前有月度积分和总积分两项积分,积分的规定如下:\n\
 1.用户发表一篇文章+5分;\n\
 2.用户回复别人文章一次+2分;\n\
 3.用户发表文章被斑竹加酷+10分;\n\
 4.用户发表的文章被回复一次+1分;\n\
 5.用户发表的文章被斑竹删除一次-10分,但对应的回复者不扣分;\n\
 6.用户发表的回复被斑竹单独删除一次-4分;\n\
*此次改版大家如果有什么问题和建议请尽快与我联系,以便尽快作出改进;\n\
吴旭凡\n\
2001.10.31";


	wndwidth = ( PHY_LCD_W > ASIX_LCD_W ) ? ASIX_LCD_W : PHY_LCD_W;
	wndHeight = ( PHY_LCD_H > ASIX_LCD_H ) ? ASIX_LCD_H : PHY_LCD_H;

	mainwin = CreateWindow(	WNDCLASS_WIN,			
							"键盘控件测试",				
							WS_OVERLAPPEDWINDOW,	
							0,0,					
							wndwidth,wndHeight,	
							0,						
							0,						
							NULL);
/*
	edit1 = CreateWindow( WNDCLASS_EDITOR,
						NULL,
						WS_CHILD | ES_SINGLE_REGULAR,
						20,40,
						60,20,
						mainwin,
						30,
						NULL);

	edit2 = CreateWindow( WNDCLASS_EDITOR,
						NULL,
						WS_CHILD | ES_SINGLE_REGULAR,
						20,80,
						60,20,
						mainwin,
						30,
						NULL);
*/
	edit1 = CreateWindow( WNDCLASS_EDITOR,
						text,
						WS_CHILD | ES_MULTI_REGULAR | ES_NOBORDER,
						1,17,
						(U16)(wndwidth-2),
						(U16)(wndHeight-120),
						mainwin,
						0,
						NULL);
	keyboard = CreateWindow( WNDCLASS_KEYBD,
						NULL,
						WS_CHILD|KBS_PINGYING|0xff,
						1, 150,
						(U16)(wndwidth-2),16,
						mainwin,
						0,
						NULL);

	hGC = GetGC();
	
	SetFocus( edit1 );

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		switch(msg.message)
		{
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}

	DestroyWindow( mainwin );

	EndofTask();

}

/********************************************************************
*   Function test_med()  
*	param in:	void		
*	param out: 	void	
*	description: 测试多行编辑器
********************************************************************/
void test_med( void )	// test multi_line editor
{
	MSG 	msg, ed_msg;
 	U32		mainwin;
	U32		hGC;
	U32		bt1,bt2,bt3,bt4,bt5,bt6;
	U32		edit;
 	U8		quit=0;

	U16		i=0;
	S8		key[][4]={ "A", 
					"中",
					"B",
					"C",
					"国",
					"人",
					"D"};
	ASIX_WINDOW *focusWin;
	
	struct ed_ctrl *edctrl;

 	mainwin = CreateWindow(	WNDCLASS_WIN,			
							"多行编辑器测试",			
							WS_OVERLAPPEDWINDOW,
							0,0,				
							PHY_LCD_W,PHY_LCD_H,
							0,				
							0,				
							NULL);			
	
	
	bt1 = CreateWindow( WNDCLASS_BUTTON,
						"按键",
						WS_CHILD | BS_REGULAR,
						20,30,
						32,20,
						mainwin,
						0,
						NULL);
	bt2 = CreateWindow( WNDCLASS_BUTTON,
						"左",
						WS_CHILD | BS_REGULAR,
						20,55,
						32,20,
						mainwin,
						0,
						NULL);
	bt3 = CreateWindow( WNDCLASS_BUTTON,
						"右",
						WS_CHILD | BS_REGULAR,
						20,80,
						32,20,
						mainwin,
						0,
						NULL);
	bt4 = CreateWindow( WNDCLASS_BUTTON,
						"清除",
						WS_CHILD | BS_REGULAR,
						60,30,
						32,20,
						mainwin,
						0,
						NULL);
	bt5 = CreateWindow( WNDCLASS_BUTTON,
						"退格",
						WS_CHILD | BS_REGULAR,
						60,55,
						32,20,
						mainwin,
						0,
						NULL);
	bt6 = CreateWindow( WNDCLASS_BUTTON,
						"删除",
						WS_CHILD | BS_REGULAR,
						60,80,
						32,20,
						mainwin,
						0,
						NULL);
	EnableFocus( bt1, FALSE );
	EnableFocus( bt2, FALSE );
	EnableFocus( bt3, FALSE );
	EnableFocus( bt4, FALSE );
	EnableFocus( bt5, FALSE );
	EnableFocus( bt6, FALSE );
	
	hGC = GetGC();
	
	edit = CreateWindow( WNDCLASS_EDITOR,
						NULL,
						WS_CHILD | ES_MULTI_REGULAR,
						10,105,
						80,52,
						mainwin,
						60,
						NULL);

	SetWindowText( edit, "欢迎使用多行编辑测试\nabcde\nfghijk\n1234567\n我们\n都是中国人", NULL );
	SetFocus( edit );

	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0);
		focusWin = (ASIX_WINDOW *)GetFocus();
		switch(msg.message)
		{
			case WM_COMMAND:
				if( msg.lparam == bt1 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = *((U16 *)key[(i++)%7 ]);
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}else
				if( msg.lparam == bt2 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = MOVE_LEFT;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}else
				if( msg.lparam == bt3 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = MOVE_RIGHT;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
					
				}else
				if( msg.lparam == bt4 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = ESCAPE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
									
					// test code for repaint and focus
					//MessageBox(0,"test", "!!", MB_YESNOCANCEL) ;
				}else
				if( msg.lparam == bt5 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = BACKSPACE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);					
				}else
				if( msg.lparam == bt6 )
				{
					edctrl = (struct ed_ctrl *)( focusWin->ctrl_str );
					ed_msg.message = WM_CHAR;
					ed_msg.lparam = (U32) focusWin;
					ed_msg.wparam = DELETE;
					ed_msg.data = (void *)edctrl;

					AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
				}
				break;
			
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}

	DestroyWindow( mainwin );

	EndofTask();
}

⌨️ 快捷键说明

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