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

📄 dict_start.c

📁 在mtk平台上开发的电子词典源码
💻 C
📖 第 1 页 / 共 4 页
字号:

	unsigned short move_line_num;
	int i;
	dict_down_place_fun();

	if (pos.y>DICT_BOTTOM_TEXT_OFFSET_Y&&pos.y<UI_DEVICE_HEIGHT)
	{
		if (pos.x>DICT_BOTTOM_TEXT_LEFT_OFFSET_X&&pos.x<DICT_BOTTOM_TEXT_LEFT_OFFSET_X+40)
		{
			dict_main_left_key_fun();
			return;
		}
		if (pos.x>DICT_BOTTOM_RIGHT_OFFSET_X&&pos.x<UI_DEVICE_WIDTH)
		{
			dict_main_right_key_fun();
			return;
		}
		return;
	}
	if (pos.y>DICT_ITEM_BEGIN_Y&&pos.y<DICT_ITEM_BEGIN_Y+DICT_ITEM_HEIGHT)//窗口选择按钮
	{
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*0&&pos.x<DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*1)
		{
			if (dict_sc_cur_menu==0)
			{
				return;
			}
			dict_sc_cur_menu = 0;
			dict_init_data();
			dict_draw_win();
			return;
		}
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*1&&pos.x<DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*2)
		{
			if (dict_sc_cur_menu==1)
			{
				return;
			}
			dict_sc_cur_menu = 1;
			dict_init_data();
			dict_draw_win();
			return;
		}
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*2&&pos.x<DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*3)
		{
			if (dict_sc_cur_menu==2)
			{
				return;
			}
			dict_sc_cur_menu = 2;
			dict_init_data();
			dict_draw_win();
			return;
		}
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*3&&pos.x<DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*4)
		{
			if (dict_sc_cur_menu==3)
			{
				return;
			}            
			dict_sc_cur_menu = 3;
			dict_init_data();
			dict_draw_win();
			return;
		}
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*4&&pos.x<DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*5)
		{
			if (dict_sc_cur_menu==4)
			{
				return;
			}
			dict_sc_cur_menu = 4;
			dict_init_data();
			dict_draw_win();
			return;
		}
		if (pos.x>DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*5&&pos.x<UI_DEVICE_WIDTH)
		{
			if (dict_sc_cur_menu==5)
			{
				return;
			}
			dict_sc_cur_menu = 5;
			dict_init_data();
			dict_draw_win();
			return;
		}
		return;
	}
	if (DICT_IS_SHOW_CUR_ITEM==0&&dict_sc_cur_menu!=3&&pos.x>0&&pos.x<UI_DEVICE_WIDTH&&pos.y>DICT_LIST_BG_OFFSET_Y&&pos.x<DICT_BOTTOM_RIGHT_OFFSET_Y)
	{
		DICT_IS_SHOW_CUR_ITEM = 1;
		dict_output_word_list(1);
		dict_show_lsk_fun(0);
		dict_show_rsk_fun(0);	
		return;
	}
	if (pos.x>DICT_CHN_OFFSET_X&&pos.x<DICT_CHN_OFFSET_X+DICT_CHN_WIDTH&&pos.y>DICT_CHN_OFFSET_Y&&pos.y<DICT_CHN_OFFSET_Y+DICT_CHN_HEIGHT)//输入法框
	{
		memset(gnoteString1,0,64);
		memcpy(gnoteString1,MMI_singleline_inputbox.text,2*UCS2_Text_len((unsigned short *)MMI_singleline_inputbox.text));
		Draw_Picture_by_name(DISK_TYPE,"dict\\input_chn_normal.gif",DICT_CHN_OFFSET_X,DICT_CHN_OFFSET_Y,0);
		LM_pinyin_shurufa();
		return;
	}
	if (pos.x>DICT_DELETE_OFFSET_X&&pos.x<DICT_DELETE_OFFSET_X+DICT_CHN_HEIGHT&&pos.y>DICT_CHN_OFFSET_Y&&pos.y<DICT_CHN_OFFSET_Y+DICT_CHN_HEIGHT)//删除框
	{
		Draw_Picture_by_name(DISK_TYPE,"dict\\delete_button_normal.gif",DICT_DELETE_OFFSET_X,DICT_CHN_OFFSET_Y,0);
		if (DICT_IS_INPUT_NULL==0)
		{
			singleline_inputbox_delete_character();
		}
		return;
	}
	if(pos.y>DICT_LIST_BG_OFFSET_Y&&pos.y<DICT_BOTTOM_RIGHT_OFFSET_Y)
	{
		if (dict_sc_cur_menu==3)
		{
			ZXWX_Vscroll_bar_pen_event((unsigned char *)(&zt_dict_exp_vertical_scroll_bar),pos,EVENT_PEN_UP);				
			return;
		}
		else
		{
			if (pos.x>DICT_LEFT_SCROLL_OFFSET_X&&pos.x<DICT_LEFT_SCROLL_OFFSET_X+13)
			{
				if (dict_cur_focus)
				{
					dict_cur_focus = 0;
					dict_output_word_list(0);
					dict_output_word_explain();
				}
				ZXWX_Vscroll_bar_pen_event((unsigned char *)(&zt_dict_list_vertical_scroll_bar),pos,EVENT_PEN_UP);
				return;
			}	
			if (pos.x>DICT_EXPLAIN_BG_OFFSET_X&&pos.x<UI_DEVICE_WIDTH)//解释的多块区域
			{
				if (dict_cur_focus == 0)
				{
					dict_cur_focus = 1;
					dict_output_word_list(0);
					dict_output_word_explain();
				}
				ZXWX_Vscroll_bar_pen_event((unsigned char *)(&zt_dict_exp_vertical_scroll_bar),pos,EVENT_PEN_UP);
				return;
			}
			if (pos.x>0&&pos.x<DICT_LEFT_SCROLL_OFFSET_X)
			{
				i = (pos.y-DICT_LIST_BG_OFFSET_Y)/DICT_LIST_ITEM_HEIGHT;
				if (i<WORD_NUM_PER_PAGE && i<word_list_num)
				{
					dict_cur_focus = 0;
					if ((i-dict_list_cur_line)>0)
					{
						move_line_num = (unsigned short)(i - dict_list_cur_line);
						if (move_line_num==1)
						{
							ZXWX_Vscroll_bar_KeyDown((unsigned char *)&zt_dict_list_vertical_scroll_bar,1);
							ZXWX_Vscroll_bar_KeyUp((unsigned char*)&zt_dict_list_vertical_scroll_bar);
						}
						else
						{
							zt_dict_list_vertical_scroll_bar.scroll_cur_line = (unsigned short)(zt_dict_list_vertical_scroll_bar.scroll_cur_line + move_line_num - 1);
							ZXWX_Vscroll_bar_KeyDown((unsigned char *)&zt_dict_list_vertical_scroll_bar,1);
							ZXWX_Vscroll_bar_KeyUp((unsigned char*)&zt_dict_list_vertical_scroll_bar);
						}

						return;
					}
					else if ((i - dict_list_cur_line)<0)
					{
						dict_cur_focus = 0;
						move_line_num =(unsigned short)(dict_list_cur_line - i);
						if (move_line_num == 1)
						{
							ZXWX_Vscroll_bar_KeyDown((unsigned char *)&zt_dict_list_vertical_scroll_bar,0);
							ZXWX_Vscroll_bar_KeyUp((unsigned char*)&zt_dict_list_vertical_scroll_bar);
						}
						else
						{
							zt_dict_list_vertical_scroll_bar.scroll_cur_line = (unsigned short)(zt_dict_list_vertical_scroll_bar.scroll_cur_line - move_line_num +1);
							ZXWX_Vscroll_bar_KeyDown((unsigned char *)&zt_dict_list_vertical_scroll_bar,0);
							ZXWX_Vscroll_bar_KeyUp((unsigned char*)&zt_dict_list_vertical_scroll_bar);
						}
						
						return;
					}
					else 
					{
							dict_output_word_list(0);
							dict_output_word_explain();
							return;
					}
				}
				else
				{
					if (dict_cur_focus==0)
					{
						return;
					}
					dict_cur_focus = 0;
					dict_output_word_list(0);
					dict_output_word_explain();
					return;
				}
			}
		}
		return;
	}

}
void dict_down_place_fun(void)
{
	int i;
	for(i=0;i<10;i++)
	{
		if(dict_down_place[i] == 1)
			break;
	}
	Text_Clip_Begin();
	switch(i)
	{
		case 0:
			dict_draw_picture_by_name("dict\\input_chn_normal.gif",DICT_CHN_OFFSET_X,DICT_CHN_OFFSET_Y);
			break;
		case 1:
			dict_draw_picture_by_name("dict\\delete_button_normal.gif",DICT_DELETE_OFFSET_X,DICT_CHN_OFFSET_Y);
			break;
		case 2:
			dict_draw_picture_by_name((char*)"dict\\en_ch_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*0,DICT_ITEM_BEGIN_Y);
			break;
		case 3:
			dict_draw_picture_by_name((char*)"dict\\ch_en_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*1,DICT_ITEM_BEGIN_Y);
			break;
		case 4:
			dict_draw_picture_by_name((char*)"dict\\idiom_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*2,DICT_ITEM_BEGIN_Y);
			break;
		case 5:
			dict_draw_picture_by_name((char*)"dict\\ch_word_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*3,DICT_ITEM_BEGIN_Y);
			break;
		case 6:
			dict_draw_picture_by_name((char*)"dict\\man_name_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*4,DICT_ITEM_BEGIN_Y);
			break;
		case 7:
			dict_draw_picture_by_name((char*)"dict\\place_button_normal.gif",DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*5,DICT_ITEM_BEGIN_Y);
			break;
		case 8:
			dict_show_lsk_fun(0);
			break;
		case 9:
			dict_show_rsk_fun(0);
			break;
	}
	Text_Clip_End();
}
void dict_pen_move_fun(mmi_pen_point_struct pos)
{
	if (DICT_IS_SHOW_CUR_ITEM&&dict_sc_cur_menu!=3)
	{
		ZXWX_Vscroll_bar_pen_event((unsigned char *)(&zt_dict_exp_vertical_scroll_bar),pos,EVENT_PEN_MOVE);		
		ZXWX_Vscroll_bar_pen_event((unsigned char *)&zt_dict_list_vertical_scroll_bar,pos,EVENT_PEN_MOVE);
		return;
	}
	if (dict_sc_cur_menu == 3)
	{
		ZXWX_Vscroll_bar_pen_event((unsigned char *)(&zt_dict_exp_vertical_scroll_bar),pos,EVENT_PEN_MOVE);		
	}
}
#endif
void dict_switch_menu(int flag)
{
	dict_sc_cur_menu+=flag;
	if (dict_sc_cur_menu<0)
	{
		dict_sc_cur_menu = 5;
	}
	dict_sc_cur_menu = dict_sc_cur_menu%6;
	dict_init_data();
	dict_draw_win();
}
int dict_divide_text_to_arraylist(unsigned short pix_num,//每行能放下英文字符的个数
								 char *str_ptr,//输入字符串指针
								 char *p_dust,
								 unsigned short length)
{
	int t_lines =0;
	/*	unsigned char *p_word=str_ptr;*/
	int cur_position = 0;
	int prev_position = 0;
	int cur_length = 0;
	int txt_len=strlen((char*)str_ptr);
	int width=0,next_add=0;
	char char_buf;
	unsigned short wchar_buf;
	char  exp[80];
	
	while(cur_position < txt_len-1)
	{
		memset(exp,0,80);
		if(str_ptr[cur_position]==10||str_ptr[cur_position]==13)
		{
			memcpy(exp,str_ptr+prev_position,cur_position-prev_position);
			strcpy(p_dust+t_lines*length,exp);
			t_lines++;
			if(str_ptr[cur_position+1]==10||str_ptr[cur_position+1]==13)
			{
				cur_position+=2;
				prev_position=cur_position;
				cur_length = 0;
				continue;
			}
			else
			{
				cur_position+=1;
				prev_position = cur_position;
				cur_length = 0;
				continue;
			}
		}
		else if ((unsigned char)str_ptr[cur_position]<=0x7f)
		{
			char_buf = str_ptr[cur_position];
			width = UI_get_character_width(char_buf);
			//			width = GUI_GetFontWidth(font,(uint16)char_buf);
			next_add = 1;
		}
		else
		{
			memcpy(&wchar_buf,str_ptr+cur_position,2);
			width = UI_get_character_width(wchar_buf);
			next_add = 2;
		}
		if((cur_length+width)<=pix_num)
		{
			cur_length += width;
			cur_position += next_add;
		}
		else
		{
			memcpy(exp,str_ptr+prev_position,cur_position-prev_position);
			strcpy(p_dust+t_lines*length,exp);
			prev_position =cur_position;
			t_lines++;
			cur_length = 0;
		}
	}
	memcpy(exp,str_ptr+prev_position,cur_position+1-prev_position);
	strcpy(p_dust+t_lines*length,exp);
	t_lines++;
	return t_lines;	
}
void dict_init_data(void)
{
	zt_dict_list_roll_content_current_line = 1;
	zt_dict_exp_roll_content_current_line = 1;
	zt_dict_list_flag = 0;
	word_list_num = 0;
	if (dict_sc_cur_menu != 3)
	{	dict_cur_focus = 0;}
	else dict_cur_focus = 1;
	dict_key_down_line = 0;
	dict_list_begin = 0;
	DICT_IS_INPUT_NULL = 1;
	dict_list_cur_line = 0;
	if (dict_sc_cur_menu==3)
	{
		DICT_IS_SHOW_CUR_ITEM = 1;
	}
	else
		DICT_IS_SHOW_CUR_ITEM = 0;
	if(word_list)
		memset(word_list,0,1024);
	if(dict_explain_array)
		memset(dict_explain_array,0,1024);
	gui_single_line_input_box_clear(&MMI_singleline_inputbox);
	dict_is_show_charge_win = 1;
}
void LM_Dicts_chinese_input_refresh(void)
{
	int text_len=0;
	text_len = (int)UCS2_Text_len((unsigned short *)tempsave);
	if(text_len>30){ text_len=30; }
	else if(text_len<0){ text_len = 0; }
	
	memset(MMI_singleline_inputbox.text, 0, 64);
	memcpy(MMI_singleline_inputbox.text, tempsave, text_len*2);
	MMI_singleline_inputbox.text_length=text_len*2;
	MMI_singleline_inputbox.current_text_p = MMI_singleline_inputbox.text+text_len*2;
}


void dict_draw_picture_by_name(char* gb_name,int off_x,int off_y)
{
	unsigned short un_buf[128];
	char			text_buf[128];
	int LM_drive;
	LM_drive = FS_GetDrive(FS_DRIVE_V_REMOVABLE, 1, FS_NO_ALT_DRIVE);

	memset(un_buf, 0, 256);
	sprintf(text_buf, "%c:\\%s", (char)LM_drive, gb_name);
	AnsiiToUnicodeString((char *)un_buf, (char *)text_buf);

	gdi_image_draw_file(off_x, off_y, (char *)un_buf);
}





















⌨️ 快捷键说明

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