📄 windows.lst
字号:
C51 COMPILER V7.50 WINDOWS 09/11/2007 21:56:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE WINDOWS
OBJECT MODULE PLACED IN .\OBJ\windows.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE windows.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\LST\windows.lst) OBJECT(.
-\OBJ\windows.obj)
line level source
1 /****************************************************************************************
2 * 文件名:WINDOW.C
3 * 功能:窗口管理。将进行各种窗口的给制及窗口内部控制。
4 * 作者:黄绍斌
5 * 日期:2004.02.26
6 * 备注:
7 ****************************************************************************************/
8 #include "config.h"
9
10 #if GUI_WINDOW_EN==1
11 /****************************************************************************
12 * 名称:GUI_WindowsDraw()
13 * 功能:显示窗口。根据提供的窗口参数进行画窗口。
14 * 入口参数:win 窗口句柄
15 * 出口参数:返回0表示操作失败,返回1表示操作成功
16 ****************************************************************************/
17 uint8 GUI_WindowsDraw(WINDOWS *win)
18 { uint8 *str;
19 1 int32 bak, bak1, bak2;
20 1
21 1 /* 参数过滤,若窗口起出范围,则返回0 */
22 1 if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0); // 宽度、高度检查,限制最小窗口
23 1 if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0); // 窗口宽度是否溢出
24 1 if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0); // 窗口高度是否溢出
25 1
26 1 /* 开始画窗口 */
27 1 GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
28 1 GUI_Rectangle(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, disp_color); // 画窗口
29 1 GUI_HLine(win->x, win->y + 12, win->x + win->with - 1, disp_color); // 画标题目栏
30 1 GUI_RLine(win->x + 12, win->y, win->y + 12, disp_color); // 画关闭窗号按钮
31 1 GUI_Line(win->x, win->y, win->x + 12, win->y + 12, disp_color);
32 1 GUI_Line(win->x + 12, win->y, win->x, win->y + 12, disp_color);
33 1
34 1
35 1 /* 写标题 */
36 1 if( win->title != NULL )
37 1 { str = win->title;
38 2 bak = win->x + 15;
39 2 bak1 = win->y + 3;
40 2 bak2 = win->x + win->with -1;
41 2
42 2 while(1)
43 2 { if( (bak+8) > bak2 ) break; // 判断标题是否溢出
44 3 if(*str=='\0') break; // 判断字符串是否结束
45 3
46 3 GUI_PutChar(bak, bak1, *str++); // 显示标题
47 3 bak += 6;
48 3 }
49 2 }
50 1
51 1
52 1 /* 写状态栏 */
53 1 if( win->state != NULL )
54 1 { if( win->hight < 60) return(0); // 判断是否可以画状态栏
C51 COMPILER V7.50 WINDOWS 09/11/2007 21:56:46 PAGE 2
55 2 /* 画状态栏 */
56 2 GUI_HLine(win->x, win->y + win->hight - 11, win->x + win->with - 1, disp_color);
57 2
58 2 str = win->state;
59 2 bak = win->x + 3;
60 2 bak1 = win->y + win->hight - 9;
61 2 bak2 = win->x + win->with -1;
62 2
63 2 while(1)
64 2 { if( (bak+8) > bak2 ) break; // 判断标题是否溢出
65 3 if(*str=='\0') break; // 判断字符串是否结束
66 3
67 3 GUI_PutChar(bak, bak1, *str++); // 显示标题
68 3 bak += 6;
69 3 }
70 2 }
71 1
72 1 return(1);
73 1
74 1 }
75
76
77 /****************************************************************************
78 * 名称:GUI_WindowsHide()
79 * 功能:消隐窗口。
80 * 入口参数:win 窗口句柄
81 * 出口参数:返回0表示操作失败,返回1表示操作成功
82 ****************************************************************************/
83 uint8 GUI_WindowsHide(WINDOWS *win)
84 { /* 参数过滤,若窗口起出范围,则返回0 */
85 1 if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0); // 宽度、高度检查,限制最小窗口
86 1 if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0); // 窗口宽度是否溢出
87 1 if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0); // 窗口高度是否溢出
88 1
89 1 /* 消隐窗口 */
90 1 GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
91 1 return(1);
92 1 }
93
94
95
96 /****************************************************************************
97 * 名称:GUI_WindowsClr()
98 * 功能:清屏窗口。
99 * 入口参数:win 窗口句柄
100 * 出口参数:无
101 * 说明:使用此函数前要先使用GUI_WindowsDraw()将窗口画出。
102 ****************************************************************************/
103 void GUI_WindowsClr(WINDOWS *win)
104 { uint8 x0, y0;
105 1 uint8 x1, y1;
106 1
107 1 /* 设置要清屏的区域 */
108 1 x0 = win->x + 1;
109 1 x1 = win->x + win->with - 2;
110 1 y0 = win->y + 13;
111 1 y1 = win->y + win->hight - 2;
112 1 if( win->state != NULL ) // 判断是否有状态栏
113 1 { if( win->hight >= 60)
114 2 { y1 = win->y + win->hight - 12;
115 3 }
116 2 }
C51 COMPILER V7.50 WINDOWS 09/11/2007 21:56:46 PAGE 3
117 1
118 1 /* 使用填充矩形实现清屏 */
119 1 GUI_RectangleFill(x0, y0, x1, y1, back_color);
120 1 }
121 #endif
122
123
124
125
126
127
128
129
130
131
132
133
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1575 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 22
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -