自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

转载 层1

近日高仿机大行其道丰富的视觉效果方便的触摸操作成了MMI设计和模仿的重中之中当人们在尽情享受这种创意带来的便利的同时MMI工作者却不得不去设计维护一个个功能越来越复杂,界面越来越炫丽的令人头痛的窗口,没有别的办法,稍一失误,就能导到整个窗口界面凌乱,功能失效,最终使程序员不得不不把大量的时间和精力花在令人头痛的界面维护中,在那些复杂的代码中寻找着可能的BUG层的运用也许是解决界面刷新,复杂界面的堆

2011-06-23 16:18:00 504

转载 MTK调试技巧1------MTK通过TRACE的栈信息寻找BUG原因与解决方法

前几天去一个公司帮他们解决BUG。BUG的描述是这样的,在使用在线QQ时,如果来电话,就会重启。没有发现ASSERT信息,只有stack dump信息。起初听他们描述,感觉像是QQ或者通话的问题。抓了TRACE之后,发现是MED模块的问题,由于MED主要是一些媒体文件的解码。由于观察现象时发现,通话时,还没有来得及响铃,就开始重启,因此可以大概推知是来电振铃出了问题,具体出在什么地方,需要查找TR

2011-06-23 15:29:00 1112 1

原创 开机流程

MMI的启动流程:mmi_bootup_start()mmi_bootup_entry_disk_check()      // 磁盘检查mmi_bootup_exit_disk_check()//退出磁盘检查mmi_frm_power_on_init_procedure()  // 开机初始化FlightModeCheckBeforeAnimation()   // 检测飞行模式  Initia

2011-06-22 13:59:00 586

转载 history机制

一、什么是History管理    对于我们上层用户而言,经常接触到的History管理是这样的:    void EntryFunc(){U8 *guiBuffer;            EntryNewScreen( Screen_ID , Exit_Func , Entry_Func , NULL );    guiBuffer = GetCurrGuiBuffer

2011-06-16 11:20:00 582

转载 DM机制

1. 窗体的重画:通过观察可以发现,每个窗体模板都调用这样一个函数:dm_redraw_ctegory_screen()。这个函数便是显示窗体的函数。它内部的实现是这样的:获得该窗体所包含的组件及它们的属性,再根据组件的类型和属性,调用不同的接口,逐一绘制各组件。无论是窗体所包含的组件,还是组件的属性,都是根据模板ID获取的。那么现在摆在面前的有两个问题:一、模板ID是如何传递到这个函数中

2011-06-15 13:45:00 783

转载 UNICODE与ASCII码的关系(MTK)

ASCII:8bits的英文编码,实际使用低7位,127个字符。32(0x20)为空格,之前是控制字符,之后是有效字符。 Unicode:使用两字节对全球字符进行统一编码,有65536个编码,UCS-2为两字节版本(2^16 =65536)。 Unicode little endian:将Unicode中表示同一字符的两个字节顺序反过来,为了适应CPU处理字符的方式,加快处理速度。如:把字符”0xFEFF”存为FFEF的格式。 Unicode big endian:Unicode字符编码以正序存储。 一、之

2011-05-30 10:12:00 2083

转载 MTK--RO,RW,ZI区别

一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助。要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。一个ARM程序包含3部分:RO,RW和ZIRO是程序中的指令和

2011-05-27 09:44:00 714

转载 安装VC6,Setup Was Unable to Create a DCOM User Account

<br />在安装vc时,最后总出现:setup was unable to create a DCOM user account in order to register microsoft visual studio/common/tools/vs_ent98/valec.exe 然后就提示安装不成功!<br />这是Visual Studio的一个BUG,只出现在Windows 2000/XP下。如果你不使用Visual Studio Analyzer,可以在安装时选择Custom,然后在Enterp

2011-04-07 09:53:00 5416

转载 MTK编译命令介绍

<br />在同一平台开发多个项目,为了减少代码维护成本和提高代码的重复使用率,采用在一个代码仓上并行开发多个项目,这就涉及到项目间的代码管理,首先执行*.bat批处理选定要开发项目 <br /><br /> <br />编译命令<br /><br />make custom=xxx gprs/gsm  new/remake/update/clean module_name<br />编译时进入Dos下工程所在的目录,然后输入上面的命令语句即可开始编译。<br />参数:<br />custom=xxx <

2011-03-31 16:32:00 1486

转载 mtk将图片转成数组buffer

<br />我们一般不采取MCT工具转,因为这工具需要整套的图片,而单张转比较麻烦,而且PNG的转出来可能有问题,所以我们采用如下的方式转换:<br />所有的图片资源,当你 Resgen 后,都会转换成 C  代码存在 Custimgdatahw.h 里面,比如主菜单的 “通话记录”(calllog)在里面的数组名就是:__MAINLCD__MAINMENU__MATRIX__MM_CALLHISTORY_PNG ,所以,我们可以把需要改的图片替代主菜单的通话记录的图片(格式不一定一致),然后压缩打包,r

2011-02-23 11:18:00 2474 1

转载 菜单下拉滚动条

<br />滚动条就是菜单右侧用来上下拖动以显示屏幕未显示内容的。 <br />滚动条有以下部分组成: <br />1.上下箭头图标——>我们一般称之为 SCROLLBAR_BUTTON <br />2.滚动轴——>我们一般称之为 SCROLLBAR_REGION <br />3.滚动条——>我们一般称之为 SCROLLBAR <br />在滚动条的显示方面,如果我们要改变滚动条是否显示,则通过改变结构体变量MMI_fixed_list_menu中的flag成员的值就可以了,因为我们事先定义好了一些菜单格式

2011-02-14 17:31:00 4456

原创 拨号大字体

<br />路径:plutommi/mmi/GUI/GUI_INC<br />修改wgui.h文件(修改之后要new一下才能有效果)<br /> <br /> 在文件wgui.h中调试坐标信息<br /> //数字键列数<br /> #define MMI_DIALING_KEYPAD_COLOMNS                      (3)<br /> //数字键行数<br /> #define MMI_DIALING_KEYPAD_ROWS                         (4)

2010-12-07 19:23:00 1380

原创 MTK如何编modis

make HM88888 gprs new(这句话就是全新编译一个工程),这样MTK的一个工程就开始编译了,就这么简单,你学会了吗?呵呵。等工程编译完成,快则30分钟或更短,慢则一个多小时或更长,完全看你机器的能力了。工程编译完了,我们开始编译模拟器,模拟器分为2种,一种是PCSimmulator的模拟器,一种是Modis模拟器,编译方式不一样。编译模拟器不一定要等整个工程编译完成之后才能编译,可以同时进行,也可以只编译模拟器,在等工程编译到开始写日志编译的时候,那个时候你就可以开始编译模拟器了。先说第一种

2010-11-15 15:53:00 3503 7

转载 MTK资源管理

资源文件生成的临时文件主要有:CustMenuTree_Out.c,这个文件是菜单临时文件,生成了我们的最终显示的菜单结构。如果你添加的菜单没有显示,正常显示的菜单突然不显示了或者显示错位了,或者显示的菜单与调用的功能不符合了,都可以从这里查到原因。resource_base_table.txt这个文件生成的是资源的ID范围,如果资源显示时出现了稀奇古怪的现在,就要看一下这个文件,检查一下你的资源文件是不是超出了设置的范围,如果超出了,就要修改MMIDataType.h重新设定范围。string_resou

2010-11-13 15:02:00 768

原创 ADD_APPLICATION_XX的差异--01

<br />#define ADD_APPLICATION_STRING(stringId, string)                            /<br />    RES_PRINT_INFO("ADD STRING/t(%s [%d]).../n", __FILE__, __LINE__);       /<br />    SetString(stringId, string, #stringId, __FILE__);                       /<br /> 

2010-07-19 20:01:00 813

原创 文件的遍历(1)

lstat头文件为:得到文件的类型:文件还是文件夹typedef enum{ FILE_DIRECTORY, FILE_REGULAR_FILE, FILE_ERROR}FileType;  FileType GetFileType(const char *filename)                                                 

2010-03-10 22:40:00 713

原创 枚举(enum)

    枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。     例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, 就是一个枚举。     枚举的说明与结构和联合相似, 其形式为:           enum 枚举名{                标识符[=整型常数],           

2010-03-10 10:10:00 543

原创 头文件中的 ifndef/define/endif 干什么用?

在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。 方法:例如要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名

2010-03-10 09:53:00 6210 1

转载 虚拟机下linux挂载U盘

需要让你的虚拟机Guest OS(Linux)能自动识别U盘。方法如下:保持焦点在Linux上,插入U盘,这时宿主操作系统Windows会弹出“找到新设备的提示”,然后一步一步的点下一步,结束以后,就可以在linux使用fdisk -l /dev/sdb命令查看到/dev/sdb1。在虚拟机识别出USB之后,用fdisk -l /dev/sdb或fdisk -l /dev/hdb(如果

2010-01-05 15:14:00 506

原创 常见递归应用总结

递归:函数调用本身 递归与迭代的区别:例子:fibonacci    递归:return  fibonacci(n) = fibonacci(n-1) + fibonacci(n-2);        递归:从高到底    从未知到已知   往回       迭代:for(i=2; i                 fibonacci(i) = fibonacci(i

2009-12-10 18:15:00 491

转载 描述 Windows 操作系统内存管理的方法

  (1)有三种方法:虚拟内存,内存映射文件,内存堆栈。 虚拟内存是将页文件加载到内存,适用于比较大的对象或结构; 内存映射文件是将磁盘上文件加载到内存,适用于大文件和单机的进程间内存共享; 堆栈就是动态的分配内存,适用于小对象的创建。 这些在windows核心编程中都描述得很详细的。 (2)当进程要读自己的虚拟地址空间中的数据时:  if(数据在物

2009-11-13 08:32:00 698

原创 static总结

 1)static对局部变量和全局变量的作用不同:对局部变量,他使变量由动态存储方式改变为静态存储方式。而对全局变量来说,它使变量局部化(局部于本文件),但仍为静态存储方式。       作用域:凡有static声明的,其作用域都是局限的,或者局限于本函数内(静态局部变量),或者局限于本文件内(静态外部变量) 2)static声明的函数   如:static  int  fun(int

2009-11-10 15:25:00 515

原创 volatile笔记

volatile修饰符就是明确告诉编译器,你他妈不准把这个变量优化到寄存器上,只能放内存里,每次到内存中去取。1)volatile,顾名思义是可变的,不定的意思,随时都可能被改动的值    volatile int i = 1;    if(i > 0)...    if条件不会当做无条件真2)volatile 就是通知编译器,这个声明的变量是一个不稳定的,在遇到此变量时候

2009-11-10 14:23:00 490 1

转载 getchar() getche() getch() 小结

  它的问题,我记得它有自已的输入输出函数,并且屏闭了 中的I/O函数curses是linux下面的图形开发库linux的getch()只在curses.h里  首先不要忘了,要用getch()必须引入头文件conio.h,以前学C语言的时候,我们总喜欢用在程序的末尾加上它,利用它来实现程序运行完了暂停不退出的效果。如果不加这句话,在TC2.0的环境中我们用Ctrl+F9编译并

2009-11-01 12:18:00 483

转载 Makefile

<br />概述 <br />—— <br /><br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 <b

2009-10-23 19:59:00 365

原创 scanf深究

例子:#include #include main(){ char buffer[1024]; scanf("%s", buffer); printf("%d/n", strlen(buffer)); printf("%s/n", buffer);}如输入:------123-34回车      //  -代表空格符 输出:3123 ==============

2009-10-23 00:04:00 3309 1

原创 sizeof总结

字节对齐 字节对齐计算机组成原理教导我们这样有助于加快计算机的取数速度,否则就得多花指令周期了。为此,编译器默认会对结构体进行处理(实际上其它地方的数据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址上,让宽度为4的基本数据类型(int等)都位于能被 4整除的地址上,以此类推。这样,两个数中间就可能需要加入填充字节,所以整个结构体的size

2009-10-23 00:03:00 941

原创 NULL与NUL区别

例子:#include #define NUL /0main(){ char str[10] = {1, 2, 3, /0, 5}; char str1[10] = {1, 2, 3, NUL, 5}; printf("str = %s/n", str); printf("str1 = %s/n", str1);}输出:str = 123st

2009-10-22 08:55:00 870

原创 C语言常见错误总结

(1)数据的数值范围 例子:#include main(){  char x;  x=500;  printf("%c/n", x);} 错了:越界了,char占一个字节,数值范围为:-128~127   如是500,它会将500转换为2进制,在赋给x时,将低八位给x,后面的截去 ---------------------------------

2009-10-22 08:55:00 570

原创 位域总结

位域的使用与一般的结构体使用没有多大区别,位域可以位运算 例子:1#include typedef  struct bt{ char a:5; char b:5; char c:5; char d:5; char e:5;}bt;main(){ printf("%d/n", sizeof(bt)); }结果:5 例子2#include typedef 

2009-10-19 00:24:00 329

原创 排序总结

// 1选择排序:就是将第一个与最小的那个交换,然后将第二个与余下的最小的那个交换 .... 选择排序是不稳定的        (稳定是两个数如果相等,则保持他们在排序前的相对顺序,反之就是不稳定的)#include void select_sort(int a[], int n)                     //选择排序{ int i, j, min, t; for(

2009-10-15 19:10:00 394

原创 哈佛大学的校训

哈佛图书馆自习室墙上的训言   1.此刻打盹,你将做梦;而此刻学习,你将圆梦。   2.我荒废的今日,正是昨日殒身之人祈求的明日。   3.觉得为时已晚的时候,恰恰是最早的时候。   4.勿将今日之事拖到明日。   5.学习时的苦痛是暂时的,未学到的痛苦是终生的。   6.学习这件事,不是缺乏时间,而是缺乏努力。   7.幸福或许不排名次,但成功必排名次。   8.学习并不是人生的全部。但,既然连

2009-10-13 11:20:00 385

原创 链表总结

补充:typedef作用:定义类型 一般格式:typedef   type  newname;如   typedef int  A;则:A   a;相当于:int  a; 例子:typedef  struct node{        int num;        char name[10];        struct node *next;

2009-10-12 10:32:00 282

原创 C学习点滴

1)  在给数组初始化时这种做法是不正确的:int a[3];a[3] = {1, 2, 3};-----------------------------也不正确:struct{int a[3];}stu; stu.a[3] = {1, 2, 3}; 正确的:int a[3] = {1, 2, 3}; ----------------

2009-10-12 00:28:00 336

原创 进程间通信(一)

(一)管道 (1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; (2)只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); (3)数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据fsd[0]:读端描述符fsd[1] :写端描述符 #incl

2009-10-10 17:28:00 370

原创 C语言面试题大汇总

1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。   2、如何引用一个已经定义过的全局变量?   答:ex

2009-10-10 00:02:00 460

转载 堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两回事,分配方式倒是类

2009-10-09 22:26:00 331

原创 字符串处理函数

(1)puts      向显示器输出字符串        原型:int   puts(const char *s)              头文件:#include         返回值:成功返回输出的字符数,失败返回EOF          puts()函数与printf()输出字符串的区别:                  1.puts在输出字符串时,遇到/0

2009-10-08 22:28:00 670

原创 read()与write()函数

例子:#include #include #include #include #include main(){ int fd, size1, size2; char s[] = "i love my mother!", buffer[80]; fd = open("gu", O_WRONLY | O_CREAT);  size1 = write(fd, s, sizeof(s)); clo

2009-10-07 13:10:00 952

转载 高效率编辑器 VIM-操作篇

虽然从很久前就开始用 VIM 了,但一直都是半调吊子,翻来覆去只用自己会的命令。最近为了提高书写代码的效率,还有 coding 时候的乐趣,又重新钻研了一下 VIM,发现了一篇很好的 VIM 入门的文章,原文是英文版的,我觉得非常适合 VIM 使用入门,所以翻译了过来。这里是简单的介绍了 VIM 的操作方式,并没有说为什么要用 VIM,如果你想知道答案可以去 Google,VIM 被誉为编辑器之神

2009-09-24 15:17:00 354

分布式编译过期破解工具

分布式编译软件过期 破解工具可使使用期延长 很好用

2011-03-29

高质量C++编程指南

高质量C++编程指南 很好的资料 提高代码质量

2010-03-19

MicrowindowsAPI

Microwindows 很好的接口函数手册

2010-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除