0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SDl怎么创建简单窗口

汽车电子技术 来源: C语言Plus 作者:Maye426 2023-02-27 14:48 次阅读

 #include
  
 //屏幕尺寸常量
 const int SCREEN_WIDTH = 640;
 const int SCREEN_HEIGHT = 480;

首先包含SDL.h头文件。然后定义我们需要的窗口宽度和高度常量。

int main(int argc,char*argv[])
{
  //初始化SDL子系统
  if (SDL_Init(SDL_INIT_VIDEO) <0)
  {
    SDL_Log("can not init SDL:%s", SDL_GetError());
    return -1;
  }

注意主函数的形参,必须是一个整型,后跟上一个char*数组(参数分别代表命令行参数个数和命令行参数数组),不能是其他形式的main函!

在主函数中我们先调用SDL_init初始化函数,如果不先初始化 SDL,就不能调用任何 SDL 函数。暂时我们只需要SDL的视频子系统,所以我们先只将 SDL_INIT_VIDEO 标志传递给它。

当发生错误时,SDL_Init 返回 负数。当出现错误时,我们可以将具体的错误原因打印到控制台。

在SDL中有一个和printf函数功能相同的函数,即SDL_Log。然后用SDL_GetError获取错误字符串并打印出来。

  //创建窗口
    SDL_Window*window = SDL_CreateWindow(u8"C语言Plus",
    SDL_WINDOWPOS_UNDEFINED, 
    SDL_WINDOWPOS_UNDEFINED, 
    SCREEN_WIDTH, SCREEN_HEIGHT,
    SDL_WINDOW_SHOWN);
  //判断是否创建成功
  if (window == NULL)
  {
    SDL_Log("can not  create window:%s", SDL_GetError());
    return -1;
  }

如果SDL成功初始化,我们将使用SDL_CreateWindow创建一个窗口。

第一个参数设置窗口的标题;

接下来两个参数分别是窗口的x和y,即窗口在屏幕上的位置,我们不关心位置在那里,所以直接传SDL_WINDOWPOS_UNDEFINED即可;

接下来的两个参数分别表示窗口的宽度和高度;

最后一个参数表示窗口创建成功之后显示出来。

如果有错误,SDL_CreateWindow 返回 NULL。我们将错误打印到控制台。

  //延迟5秒
    SDL_Delay(5000);
  //销毁窗口
  SDL_DestroyWindow(window);
  //清理所有初始化的子系统
  SDL_Quit();
  return 0;
}

最后我们让程序延迟5秒再退出,否则窗口会一闪而过;退出之前需要调用SDL_DestroyWindow手动销毁窗口和调用SDL_Quit清理所有初始化的子系统。

以下是创建成功的界面:

pYYBAGP8UhCAXTZNAAAVX7DCxGo083.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62610
  • char
    +关注

    关注

    0

    文章

    11

    浏览量

    3723
  • main
    +关注

    关注

    0

    文章

    38

    浏览量

    6164
收藏 人收藏

    评论

    相关推荐

    SDL编译安装图片显示

    SDL(Simple DirectMediaLayer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以
    的头像 发表于 09-29 15:54 1488次阅读
    <b class='flag-5'>SDL</b>编译安装图片显示

    SDL显示文本

       SDL2.0库本身没有文本数据显示相关函数接口,文本显示需要编译安装SDL_ttf库。
    的头像 发表于 09-29 16:32 2020次阅读
    <b class='flag-5'>SDL</b>显示文本

    SDL时间和天气显示

    SDL(Simple DirectMediaLayer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以
    的头像 发表于 12-08 14:15 1206次阅读

    Windows下基于MSVC搭建SDL开发环境

    Windows下基于MSVC搭建SDL开发环境
    的头像 发表于 06-08 10:29 1587次阅读
    Windows下基于MSVC搭建<b class='flag-5'>SDL</b>开发环境

    Microwindows窗口创建和消除

    消息的处理函数。可以通过预定的类型,如按键(button)、文本框(editboxs)等来定制窗口,同时也可以由用户定义特殊的类型。无论通过什么方式定义类型,创建窗口和消息通讯的方法是相同的。与
    发表于 06-01 09:40

    SDL的交叉编译问题

    求助!!移植SDL到mini2440开发板上时,在交叉编译SDL_image进行configure之后,再make时出现如下错误:/opt/mini2440/output/lib/libSDL.so
    发表于 12-06 20:50

    移植SDL到JZ2440显示BMP图片

    ,这就是编译SDL所得到的文件 2、同样编译show_bmp_file.c,和之前不同的是,这次是交叉编译$ cd ..$ cd show_bmp//这是笔者之前创建的目录,用于存放测试程序
    发表于 06-29 11:19

    用Dialog创建窗口 在开发板上显示的窗口创建的程序如何最大化?

    用Dialog创建窗口在开发板上显示的窗口创建的程序一样大,但是用QWidget和QMainWindow创建
    发表于 01-10 07:20

    【飞凌RK3588开发板试用】基于SDL进行GUI程序开发

    cd SDL2-2.26.4/ 创建目录mkdir build 配置./configure --prefix=$PWD/build 构建安装make && make install 编译
    发表于 04-06 15:30

    【昉·星光 2 高性能RISC-V单板计算机体验】使用 SDL2 绘制窗口程序

    注意到starfive官方给出了libSDL2-dev的软件包,使用SDL作为中间件可以跨平台适配许多的界面库,使用昉·星光2使用SDL2来绘制一个窗口 之前根据官方文档中的说明,将
    发表于 08-05 18:54

    基于SDL的自动售票系统的研发

    基于SDL 的自动售票系统的研发顾丽丽 梅杓春(南京邮电大学自动化学院,江苏南京 210003)摘要:本文简要介绍了SDL语言及其支持工具。通过设计自动售票系统实例对如何利用SDL
    发表于 12-18 11:34 21次下载

    简单窗口及菜单的例子

    简单窗口及菜单的例子:  Dos汇编,Win32汇编,硬件资料,丰富的汇编、C 源代码,编程例子详解。
    发表于 05-06 16:36 9次下载

    利用C语言创建windows窗口的程序解析

    C语言创建windows窗口
    的头像 发表于 01-15 10:42 1.1w次阅读
    利用C语言<b class='flag-5'>创建</b>windows<b class='flag-5'>窗口</b>的程序解析

    Qt自定义窗口部件的创建

    通过对一个已经存在的Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件。以下直接对已有的Qt窗口部件进行子类化
    发表于 09-09 09:00 2426次阅读

    SDL下载与配置

    点击[SDL2 核心库下载](https://libsdl.org/download-2.0.php)下载SDL2库,如下图根据编译器选择不同版本(Visual Studo系列选择第一个)。
    的头像 发表于 02-27 14:51 3333次阅读
    <b class='flag-5'>SDL</b>下载与配置