代码理解

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);

}
}

里面的代码怎么理解,没行都有解释那就更好
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧