- 论坛徽章:
- 0
|
最近要为公司定制基于nano-X的图形系统,首要任务是要定制nano-X中的窗体任务管理器,我就以nano-X 0.91 full version中的nanowm源码为基础,进行定制。
一. 概述
nanowm在nano-X图形系统中的主要任务是提供对多个客户端窗体的集中管理,主要是对客户窗体进行边框绘制、及对客户窗体操作进行处理,如窗体的关闭,移动,放大、缩小等,还可以对窗体的外观进行定制,如改变窗体的标题文本、大小、前景或背景颜色或窗体边框的颜色,类似于window平台的主题定制。
二. 源码分析
好了,大理论我也说不太清楚,还是分析源代码吧^_^
1. 源码文件列表
nanowm的源代码在microwindows-0.91full\src\demos\nanowm\下,下面是该目录下的文件列表:
Actions.c 此文件实现的几个函数主要是用于客户窗体的在被HID设备down、up、move的时候对窗体进行处理
Clients.c 此文件实现的几个函数主要是用于客户窗体的子窗体的绘画,及窗体的新建、缩放、消毁。
Events.c 此文件实现的函数主要提供对mouse,keyboard的事件进行处理,如mouse的down, up, move。 keyboard的down,up等。
Nanowm.c nanow窗体任务管理的主函数main,里面有个while loop. 派遣各种窗体的各种事件及mouse,keyboard事件。
Nanowm.h nanowm窗体任务管理头文件,里面有一些重要的数据结构。
Root.c 只有一个函数root_create(...),用于创建nanowm的desktop.
Wlist.c 文件实现的函数主要用于对窗体在窗体链表中进行查找、删除等操作。
还有一几个文件,如Makefile文件,run.sh文件。(未完)
2. nanowm的入口在nanowm.c文件中,该文件的全部代码如下:
/*
* NanoWM - Window Manager for Nano-X
*
* Copyright (C) 2000 Greg Haerr
* Copyright (C) 2000 Alex Holden
* Parts based on npanel.c Copyright (C) 1999 Alistair Riddoch.
*/
#include
#include
#define MWINCLUDECOLORS // 以后需要用到MW开头的系统预定颜色宏
#include "nano-X.h" // nano-X图形系统核心头文件
/* Uncomment this if you want debugging output from this file */
/*#define DEBUG*/
#include "nanowm.h" // nanowm的头文件,包含几个数据结构和函数原型定义
GR_SCREEN_INFO si; // 屏幕结构,在nano-X.h中定义,其实是MWSCREENINFO结构
int main(int argc, char *argv[])
{
GR_EVENT event;
GR_WM_PROPERTIES props; // 窗体属性结构
win window;
if(GrOpen()
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94328/showart_1898756.html |
|