代码理解

jooonny 2014-02-10 05:15:21
static void tw_draw_setup(void* list, int item)
{
menu_obj* al = (menu_obj*)list;

unsigned char line[TW_LEN]={0};

struct font_info Item_line={line, 1, 0, NOMAL_FG_COLOR, NOMAL_BG_COLOR, 0};

unsigned char i,j;

for(i=0;i<TW_LEN;i++)
line[i]=IDX_SPACE;
line[TW_LEN]=0;

for(j=0;j<TW_ITEM;j++)
{
tw_draw_board(al,item,j);

if(j == item)
{
Item_line.bg_color=NOMAL_BG_COLOR;
Item_line.fg_color=10;

line[0] = IDX_SELECT_ICON;
line[1] = IDX_SELECT_ICON+1;
//line[2] = IDX_SELECT_ICON+2;
}
else
{
Item_line.bg_color=NOMAL_BG_COLOR;
Item_line.fg_color=NOMAL_FG_COLOR;

line[0] = IDX_SPACE;
line[1] = IDX_SPACE;
//line[2] = IDX_SPACE;
}

if(j<2)
{
for(i=TEXT_HEAD;i<LANGUAGE_FONT_LEN+TEXT_HEAD;i++)
line[i]=IDX_LANGUAGE_FONT+(i-TEXT_HEAD)+j*LANGUAGE_FONT_LEN;
}
else
{
line[4] = IDX_SPACE;
line[5] = IDX_SPACE;
line[6] = IDX_SPACE;
line[7] = IDX_SPACE;
}

Item_line.y = 2+j;
osdi_draw_font(&Item_line);

}
}

里面的代码怎么理解,没行都有解释那就更好
...全文
123 点赞 收藏 2
写回复
2 条回复
Falleyes 2014年02月11日
struct menu_obj;

static void tw_draw_setup(void* list, int item)
{
	menu_obj* al = (menu_obj*)list;    //将一个void类型的指针强制转换为menu_obj类型的指针,并赋值给al

	unsigned char line[TW_LEN] = { 0 };    //无符号字符数组全部初始为0

	struct font_info Item_line = { line, 1, 0, NOMAL_FG_COLOR, NOMAL_BG_COLOR, 0 };    //

	unsigned char i, j;

	for (i = 0; i<TW_LEN; i++)    //将line元素赋值为IDX_SPACE
		line[i] = IDX_SPACE;
	line[TW_LEN] = 0;    //将line数组外的第一个元素置0

	for (j = 0; j<TW_ITEM; j++)
	{
		tw_draw_board(al, item, j);	   //调用tw_draw_board

		if (j == item)
		{
			Item_line.bg_color = NOMAL_BG_COLOR;    //设置成员变量
			Item_line.fg_color = 10;                //设置成员变量

			line[0] = IDX_SELECT_ICON;    //line[0]赋值IDX_SELECT_ICON
			line[1] = IDX_SELECT_ICON + 1;    //依上+1
			//line[2] = IDX_SELECT_ICON+2;
		}
		else
		{
			Item_line.bg_color = NOMAL_BG_COLOR;    //设置成员变量
			Item_line.fg_color = NOMAL_FG_COLOR;    //设置成员变量

			line[0] = IDX_SPACE;    //line[0]赋值IDX_SPACE
			line[1] = IDX_SPACE;    //依上
			//line[2] = IDX_SPACE;
		}

		if (j<2)
		{
			for (i = TEXT_HEAD; i<LANGUAGE_FONT_LEN + TEXT_HEAD; i++)
				line[i] = IDX_LANGUAGE_FONT + (i - TEXT_HEAD) + j*LANGUAGE_FONT_LEN;
		}
		else
		{
			line[4] = IDX_SPACE;    //line数组4-7位置元素赋值IDX_SPACE
			line[5] = IDX_SPACE;
			line[6] = IDX_SPACE;
			line[7] = IDX_SPACE;
		}

		Item_line.y = 2 + j;    //成员变量赋值
		osdi_draw_font(&Item_line);    //osdi_draw_font调用

	}
}
1、楼主的程序不完成,就看这些也不知道你的函数是干什么的 2、程序没有缩进,看着很累 3、都是基本的东西,楼主还要每句解释。。。
回复 点赞
赵4老师 2014年02月11日
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告