DjyGUI: GDD窗口程序入门-HelloWorld

GUI_Creater 发表于 2015-4-28 13:58:18 | 显示全部楼层 [复制链接]
11 3486
这篇贴子,将给大家详细讲解基于GDD的一个简单的入门级窗口应用程序,在阅读本贴之前,建议用户先熟悉"DJYOS图形编程(上)",里面有对GDD的详细介绍,该文档可到 www.djyos.com 的“资源下载”页面下载。本贴将不再对GDD的基本知识一一讲解......按本行业中不成文的老规矩~~~我们选定为一个经典的"Hello World"程序开始.为了后面的讲解方便,我们先上整段源程序~~~


回复

使用道具 举报

发表于 2015-4-27 19:48:27 | 显示全部楼层
  1. #include   "stdlib.h"
  2. #include    "djyos.h"
  3. #include    "gdd.h"
  4. static  u32 win_proc(MSG *pMsg);
  5. void    GDD_Demo_HelloWorld(void)
  6. {
  7.     HWND hwnd;
  8.     MSG msg;
  9.     //创建主窗口
  10.     hwnd = CreateWindow( win_proc,   //窗口过程函数。
  11.           "Hello World",  //窗口标题名。
  12.        WS_MAIN_WINDOW,  //窗口风格:主窗口。
  13.        10,20,300,200,  //窗口的位置及大小。
  14.        NULL,0x0000,NULL); //窗口的父窗口,ID,附加数据。
  15.     ShowWindow(hwnd,TRUE);  //显示窗口
  16.     //开始窗口消息循环
  17.     while(GetMessage(&msg,hwnd)) //丛主窗口消息队列中获得一条消息,前主窗口退出时,会结束该循环。
  18.     {
  19.         DispatchMessage(&msg);   //将接收到消息派发目标窗口。
  20.     }
  21. }
  22. #define ID_CLOSE    0x1000
  23. static  u32 win_proc(MSG *pMsg)
  24. {
  25.     HWND hwnd;
  26.     HDC hdc;
  27.     RECT rc,rc0;
  28.     u32 i;
  29.     hwnd =pMsg->hwnd;
  30.     switch(pMsg->Code)
  31.     {
  32.         case    MSG_CREATE: //窗口创建消息。
  33.                 GetClientRect(hwnd,&rc0);
  34.                //创建一个按钮。
  35.                 CreateWindow(BUTTON, //BUTTON宏表示创建的子窗口为按钮
  36.                    "关闭",  //按钮名
  37.        WS_CHILD|BS_NORMAL|WS_BORDER|WS_VISIBLE, //按钮风格
  38.        RectW(&rc0)-64,RectH(&rc0)-28,60,24, //按钮位置和大小
  39.        hwnd,ID_CLOSE,NULL); //按钮所属的父窗口,ID,附加数据
  40.                 break;
  41.                 ////
  42.         case    MSG_NOTIFY: //控件通知消息。
  43.                 {
  44.                  u16 event,id;
  45.                  event =HI16(pMsg->Param1);  //获得通知事件类型。
  46.                  id    =LO16(pMsg->Param1); //获得通知事件的控件ID。
  47.                     switch(id)
  48.                     {
  49.                      case ID_CLOSE:
  50.        if(event==BTN_UP) //ID_CLOSE按钮弹起,则关闭窗口。
  51.        {
  52.         PostMessage(hwnd,MSG_CLOSE,0,0);
  53.         InvalidateWindow(hwnd);
  54.        }
  55.        break;
  56.        ////
  57.                      default:
  58.                       return DefWindowProc(pMsg);
  59.                     }
  60.                }
  61.                break;
  62.                ////
  63.         case    MSG_PAINT: //窗口客户区绘制消息。
  64.                 {
  65.                     hdc =BeginPaint(hwnd); //开始绘图并获得绘图上下文(hdc)。
  66.                     GetClientRect(hwnd,&rc0);   //获得窗口客户区矩形
  67.                     SetFillColor(hdc,RGB(255,255,255)); //设置填充色。
  68.                     FillRect(hdc,&rc0);     //填充矩形。
  69.                     SetTextColor(hdc,RGB(255,0,0));  //设置文字颜色。
  70.                     TextOut(hdc,10,20,"Hello World!",-1);  //在客户区10,20的位置输出文字。
  71.                     EndPaint(hwnd,hdc); //结束绘制并释放绘图上下文。
  72.                 }
  73.                 break;
  74.                 ////
  75.         default: //对于其它的用户不需要消息,交由系统默认处理。
  76.                 return  DefWindowProc(pMsg);

  77.     }
  78.     return  0;
  79. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-4-27 20:00:57 | 显示全部楼层
本帖最后由 GUI_Creater 于 2015-4-28 09:58 编辑

该程序在S3C2440平台上的实际运行效果如下:

QQ图片20150427200143.jpg
回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:06:50 | 显示全部楼层
该程序的 C原文件下载:

gdd_demo_hello_world.c

2.75 KB, 下载次数: 10557

代码原文件

回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:15:37 | 显示全部楼层
看代码和WIN32  好像
回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:22:14 | 显示全部楼层
嗯,学习了,不是说还有讲解的吗
回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:26:48 | 显示全部楼层
fwjie 发表于 2015-4-28 10:15
看代码和WIN32  好像

是的, GDD是类似于WIN32的架构和风格,使用成熟的架构,有利于用户快速上手,无须重新学习和掌握太多冷门概念;但这也不是和WIN32完全兼容,需要作一些调整,才更能适用于小型嵌入式系统的应用.
回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:35:37 | 显示全部楼层
竟然有代码,待我飞起再说。。
回复 支持 反对

使用道具 举报

发表于 2015-4-28 10:37:17 | 显示全部楼层
加油君 发表于 2015-4-28 10:35
竟然有代码,待我飞起再说。。

有代码是必须的.
回复 支持 反对

使用道具 举报

发表于 2015-4-28 13:58:18 | 显示全部楼层
GUI_Creater 发表于 2015-4-28 10:37
有代码是必须的.

有没有整个2440 的BSP 我也来试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入我们,

发现科技可以让生活更美好...

立即注册

如果您已拥有本站账户,则可

精华导读

推荐阅读

资讯排行

站点统计|手机版|小黑屋| 都江堰操作系统交流论坛 ( 粤ICP备11028047号 )

Templated By DJYOS 论坛  粤ICP备11028047号  

返回顶部 返回列表