line.c
资源名称:GPRS_work.rar [点击查看]
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:4k
源码类别:
GPS编程
开发平台:
C/C++
- /****************************************************************************
- * 文件名:Line.C
- * 功能:MiniGUI应用例子。
- * 创建一个主窗口,并在窗口中间画出随机颜色、随机长度和随机角度
- * 的50根直线。
- * 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
- ****************************************************************************/
- #include <stdio.h>
- #include <stdlib.h>
- /* 包含MiniGUI的配置头文件(编译配置选项) */
- #include "MiniGUI_config.h"
- /* 包含MiniGUI头文件 */
- #include "common.h"
- #include "minigui.h"
- #include "gdi.h"
- #include "window.h"
- #include "control.h"
- /* 定义random()函数 */
- #define random() rand()
- /* 主窗口起始位置及大小 */
- #define MWINDOW_LX 5 /* 窗口左边框的x值 */
- #define MWINDOW_TY 50 /* 窗口上边框的y值 */
- #define MWINDOW_RX 235 /* 窗口右边框的x值 */
- #define MWINDOW_BY 200 /* 窗口下边框的y值 */
- /* 定义窗口宽度、高度的宏 */
- #define MWINDOW_W (MWINDOW_RX - MWINDOW_LX)
- #define MWINDOW_H (MWINDOW_BY - MWINDOW_TY)
- HWND hMainWnd; // 主窗口句柄
- /****************************************************************************
- * 名称:WinProc()
- * 功能:主窗口过程函数。
- * 处理MSG_PAINT消息,在窗口中间画出随机颜色、随机长度和随机角度
- * 的50根直线。
- * 入口参数:hWnd 窗口句柄
- * message 消息
- * wParam 消息附加参数1
- * lParam 消息附加参数2
- * 出口参数:消息已处理则返回0。
- ****************************************************************************/
- static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
- { HDC hdc;
- int x0, y0; // 直线第一点坐标变量
- int x1, y1; // 直线第二点坐标变量
- int no;
- switch(message)
- { case MSG_PAINT:
- hdc = BeginPaint(hWnd);
- for(no=0; no<50; no++) // 画50条随机直线
- { SetPenColor(hdc, SysPixelIndex[random()%16]); // 取得随机颜色
- x0 = random()%MWINDOW_W; // 随机取得直线第一点坐标值
- y0 = random()%MWINDOW_H;
- /* 以中心点对称,计算出直线第二点坐标值。
- 设x0在中点左边,中点值为W/2,则中点到x0的长度Mx = W/2 - x0,
- 所以x1 = W/2 + Mx = W/2 + W/2 - x0 = W - x0。
- 若x0在中点右边,也会得到同要的结果(x1=W - x0)。
- */
- x1 = MWINDOW_W - x0;
- y1 = MWINDOW_H - y0;
- MoveTo(hdc, x0, y0); // 移动hdc当前位置到直线第一点处
- LineTo(hdc, x1, y1); // 画直线到直线第二点
- }
- EndPaint(hWnd, hdc);
- break;
- case MSG_CLOSE:
- DestroyMainWindow(hWnd);
- PostQuitMessage(hWnd);
- break;
- default:
- return(DefaultMainWinProc(hWnd, message, wParam, lParam));
- }
- return(0);
- }
- /****************************************************************************
- * 名称:InitMainWindow()
- * 功能:建立主窗口。
- * 入口参数:无
- * 出口参数:建立成功返回1,否则返回0。
- ****************************************************************************/
- int InitMainWindow(void)
- { MAINWINCREATE window_info;
- window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
- window_info.dwExStyle = WS_EX_NONE;
- window_info.spCaption = "GDI Demo";
- window_info.hMenu = 0;
- window_info.hCursor = GetSystemCursor(0);
- window_info.hIcon = 0;
- window_info.MainWindowProc = WinProc;
- window_info.lx = MWINDOW_LX;
- window_info.ty = MWINDOW_TY;
- window_info.rx = MWINDOW_RX;
- window_info.by = MWINDOW_BY;
- window_info.iBkColor = COLOR_lightwhite;
- window_info.dwAddData = 0;
- window_info.hHosting = HWND_DESKTOP;
- hMainWnd = CreateMainWindow(&window_info);
- if(hMainWnd == HWND_INVALID) return(0);
- else return(1);
- }
- /****************************************************************************
- * 名称:MiniGUIMain()
- * 功能:MiniGUI程序入口点。
- * 入口参数:argc 参数个数
- * argv 参数字符串指针
- * 出口参数:返回0。
- ****************************************************************************/
- int MiniGUIMain(int argc, const char *argv[])
- { MSG Msg;
- #ifdef _LITE_VERSION
- SetDesktopRect(0,0, 800,600);
- #endif
- srand(3721); // 初始化随机总机
- InitMainWindow();
- ShowWindow(hMainWnd, SW_SHOWNORMAL);
- while(GetMessage(&Msg, hMainWnd))
- { TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- MainWindowThreadCleanup(hMainWnd);
- return(0);
- }
- #ifndef _LITE_VERSION
- #include "dti.c"
- #endif