自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 图形设备接口GDI

GAL(Graphics Abstract Layer):图形抽象层,提供了图形抽象接口,用于图形的显示;GDI(Graphics Device Interface): 基于GAL为上层应用程序提供图形相关的接口,如绘曲线、输出文本、填充矩形等等。图形设备环境(Device Context)Device Context,DC,也称作“图形设备环境”。每个图形设备上下文定义了图形输出设备或内存中的一个矩形的显示输出区域,以及相关的图形属性。在调用图形输出函数时,均要求指定经初始化的图形设备上下文。也就.

2022-02-23 11:01:58 438

原创 coredump使用方法

在Linux环境下输入:ulimit -c unlimited;//不限制coredump的大小ulimit -c unlimited echo “1” > /proc/sys/kernel/core_uses_pid //开启coredump后缀echo “/mnt/core-%e-%p-%t” > /proc/sys/kernel/core_pattern //制定coredump的生成路径程序出错时,会自动生成coredump文件set solib-search-path 库文.

2021-10-19 20:49:09 587

原创 红黑树的个人总结

二叉查找树特性:某结点的左子树结点值仅包含小于该结点值某结点的右子树结点值仅包含大于该结点值左右子树每个也必须是二叉查找树而二叉查找树存在一种极端情况,树的一条腿无线长,不够平衡,此时查找效率和普通链表没有区别。红黑树红黑树首先是一个二叉查找树,在二叉查找树的特性基础上引入了新的规则,使其可以摒弃极端情况,达到自平衡的目的。红黑树的特性:(1)每个结点或者是黑色,或者是红色。(2)根结点是黑色。(3)每个叶子结点(NIL)是黑色。 [注意:这里叶子结点,是指为空(NIL或NULL)的叶

2021-07-21 22:53:31 173 1

原创 sizeof和strlen的区别

char *str1 = “abcde”; char str2[] = “abcde”; char str3[8] = {‘a’}; char ss[] = “0123456789”;其计算结果为: sizeof(str1) = 4; sizeof(str2) = 6; sizeof(str3) = 8; sizeof(ss) = 11;str1 是一个指针,只是指向了字符串"abcde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个指针所占的空间。在C/C++中一

2021-07-09 22:22:23 90

原创 Linux利用maps文件和反汇编定位崩溃地址

一、maps文件maps文件可以查看某个进程的代码段、栈区、堆区、动态库、内核区对应的虚拟地址。第一列:虚拟地址空间的开始和结束地址vm_start-vm_end 。第二列:虚拟地址空间的属性vm_flags 。每种属性用一个字段:r表示可读,w表示可写,x表示可执行,p和s共用一个字段,互斥关系,p表示私有段,s表示共享段,如果没有相应权限,则用-代替。第三列:映射偏移。vm_pgoff 对有名映射,表示此段虚拟内存起始地址在文件中以页为单位的偏移。对匿名映射,它等于0或者vm_start/P

2021-07-09 21:00:33 1515 2

转载 signal信号总结

SignalDescription1SIGHUP信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联2SIGINT程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl+C)时发出3SIGQUIT和 SIGINT类似, 但由QUIT字符(通常是Ctrl+)来控制. 进程在因收到 SIGQUIT 退出时会产生core文件, 在这个意义上类似于一个程序错...

2021-06-29 20:12:53 1080

原创 Linux通过Strace和GDB排查死锁问题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,他们都将无法推进下去发生死锁通常要满足以下四个条件:互斥条件:一个资源只能同时被一条线程占用。请求和保持条件:当一个线程因获取不到其他资源而阻塞时,对自己所持有的资源保持不放。不剥夺条件:除非线程自己释放资源,否则其占有的资源不可以被剥夺。条件:处于死锁等待中的线程一定会形成一条环路。发生死锁的情况:同一线程递归同一个线程中,试图对同一个互斥量连续加锁两次,那么它自身就会陷入死锁

2021-06-05 15:25:37 1441

原创 GDB调试命令用法总结

2021-06-01 19:19:53 134

原创 memset、memcpy函数优化

void *memset4(void *src, int c, size_t n){ char *tmpsrc; int tmp; if (src == NULL) return NULL;tmpsrc = (char*)src; if ((unsigned long)tmpsrc & 0x3){ while (n--) *tmpsrc++ = (char) c; } else { size_t wordnum; size_t slice; wordnu

2021-05-31 15:42:20 1096 1

原创 strip命令简介

在实际的Linux开发中,除了执行文件以外,会有一个用来调试的文件,类型为not striped,想要了解此文件的作用以及产生的原因,首先要了解strip命令strip命令用于脱掉文件的衣服,去除文件中的符号信息首先来看一个执行文件a.out的大小是9918个字节,且是not stripped通过nm命令, 可以读出a.out中的符号信息。chenpi@General:~$ ls -l a.out-rwxrwxr-x 1 chenpi chenpi 9918 Sep 7 2019 a.ou

2021-05-06 19:18:55 3325

原创 32位到64位开发代码移植问题

最近工作需要从32位系统移植代码到64位系统,遇到很多意想不到的问题,需要确认代码兼容性,一般通过解决编译和测试中出现的缺陷来完成整个移植过程,现对移植过程中遇到的问题做下总结。32位和64位的区别主要表现在参数类型长度上,区别如下:参数类型32位64位char88unsigned char88short1616unsigned short1616int3232unsigned int3232long3264un

2021-04-26 21:40:26 479

原创 结构体初始化

定义struct Student{int number,age;char name[20];float score;};用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名,如:struct Student p1;而在C++中,则可以直接写:结构名 对象名,即:Student p1;估计某人觉得经常多写一个struct太麻烦了,于是就发明了:typedef&

2021-04-25 21:31:26 969

原创 memset使用注意事项

memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的;包含在<[string.h]>头文件中,可以用它对一片内存空间逐字节进行初始化;注意: 该函数是按一个字节一个字节来给数组或者是结构体赋值。原型为 :void *memset(void *s, int v, size_t n);这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数;void *memset(void *s,int c,size_t n) 作用:将已开辟内存空间s的首n

2021-04-25 21:31:03 627

原创 grep命令多条件查找

history | grep ‘gui’ | grep -v ‘Wunused’history | grep ‘gui’ | grep ‘pointer’history | grep -E ‘gui | pointer’

2021-04-22 09:52:18 1066

原创 include头文件报错unknown type name

记录一个在工作中遇到的小问题,在引用头文件时提示如下错误[ error][src/…/…/…/guiMg/include/internals.h][347][ unknown type name ‘INVRGN’][ error][src/…/…/…/guiMg/include/internals.h][348][ unknown type name ‘PGCRINFO’][ error][src/…/…/…/guiMg/include/internals.h][416][ unknown type

2021-04-21 23:38:40 6704

转载 MiniGUI 体系结构之二

MiniGUI 体系结构之二多窗口管理和控件及控件类魏永明蓝点软件(北京)研发中心技术主管2001/01/06本文是 MiniGUI 体系结构系列文章的第二篇,重点介绍 MiniGUI 的多窗口机制以及相关的窗口类技术。其中涉及到窗口 Z 序、窗口剪切、控件类和控件以及输入法模块设计等等。1 引言在任何一个足够复杂的 GUI 系统中,处理窗口之间的互相剪切是其首要解决的问题。因为多窗口系统首先要确保一个窗口中的绘制输出不会影响到另外一个窗口。为此,GUI 系统一般要利用 Z 序来管理窗口之间的互

2021-03-30 22:00:27 599

转载 MiniGUI体系结构之一

1 引言到目前为止,MiniGUI 的最新发布版本是 0.9.96。我们将 0.9.xx 系列版本定位为 MiniGUI 1.0 版本的预览版。在 0.9.xx 版本足够稳定时,我们将发布 MiniGUI 1.0 版本,同时,目前的代码不会再进行重大调整。在 MiniGUI 1.0 版本发布之后,我们将立即着手开发 MiniGUI 2.0 版本。该版本预期将在体系结构上进行重大调整。为了吸引更多的自由软件程序员加入 MiniGUI 2.0 的开发,也为了更好地帮助 MiniGUI 程序员进行程序开发,我们

2021-03-18 19:19:05 457

原创 miniGUI源码分析:软键盘界面美化

上一篇说到,miniGUI软键盘根本上是由图片和按键坐标配合实现,若想修改和软键盘,则需替换图片和修改对应坐标,新增键盘同理。图片资源在mgiresource.c文件中,skbRes中为所有的键盘图片资源,同名图片可直接替换,新增图片则需在skbRes中添加。坐标则需根据图片位置修改以下宏定义。honghanyiSKB_WIN_W/SKB_WIN_H键盘的宽高SKB_CLOSE_L/SKB_CLOSE_T / SKB_CLOSE_R/SKB_CLOSE_B关闭键盘按钮的坐标

2021-03-10 22:03:31 550 1

原创 miniGUI源码分析:软键盘实现原理

软键盘文件目录wenjianshuomingsoftkeywindow.c软键盘主窗口文件,包含窗口创建、窗口过程函数等mgicommon.c窗口通用处理函数文件,包含按键消息处理函数、字符窗体处理函数等mgiresource.c图片资源管理文件,包含图片资源的加载和释放等en_kbd.c英文键盘文件,不同键盘分别在不同的文件中,例如pinyin_kbd.c、num_kbd.csize_skb.h窗口和按键坐标定义文件softkeyboard.h

2021-03-09 22:35:03 943

原创 miniGUI源码分析:消息机制

miniGUI通过接收消息来和外界交互。消息由系统或应用程序产生,系统对输入事件产生消息,系统对应用程序的响应也会产生消息,应用程序可以通过产生消息来完成某个任务,或者与其它应用程序的窗口进行通讯。总而言之,miniGUI 是消息驱动的系统,一切运作都围绕着消息进行。MSG 消息结构MSG 消息结构的成员包括该消息所属的窗口(hwnd)、消息标识(message)、消息的WPARAM 型参数(wParam)、消息的 LPARAM 型参数(lParam)以及消息发生的时间。 typedef st

2021-02-28 19:27:39 605

原创 miniGUI源码分析:初始化

miniGUI是一个面向嵌入式系统的轻量级图形用户界面支持系统,其轻量小巧,占用资源少是主要优势。但由于没有更新,目前使用的仍是08年发布的版本,随着用户对操作界面的美观度及视觉效果的要求越来越高,设计的很多界面效果无法实现,因此在开发很多需求的过程中,需要先开发底层控件,扩展现有功能,使开发过程变得较为复杂。学习使用miniGUI有一年多的时间,现对部分内容做下总结。

2021-02-25 22:49:29 383 1

空空如也

空空如也

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

TA关注的人

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