0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SDl怎么創(chuàng)建簡單窗口

汽車電子技術(shù) ? 來源: 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子系統(tǒng)
  if (SDL_Init(SDL_INIT_VIDEO) <0)
  {
    SDL_Log("can not init SDL:%s", SDL_GetError());
    return -1;
  }

注意主函數(shù)的形參,必須是一個(gè)整型,后跟上一個(gè)char*數(shù)組(參數(shù)分別代表命令行參數(shù)個(gè)數(shù)和命令行參數(shù)數(shù)組),不能是其他形式的main函!

在主函數(shù)中我們先調(diào)用SDL_init初始化函數(shù),如果不先初始化 SDL,就不能調(diào)用任何 SDL 函數(shù)。暫時(shí)我們只需要SDL的視頻子系統(tǒng),所以我們先只將 SDL_INIT_VIDEO 標(biāo)志傳遞給它。

當(dāng)發(fā)生錯(cuò)誤時(shí),SDL_Init 返回 負(fù)數(shù)。當(dāng)出現(xiàn)錯(cuò)誤時(shí),我們可以將具體的錯(cuò)誤原因打印到控制臺(tái)。

在SDL中有一個(gè)和printf函數(shù)功能相同的函數(shù),即SDL_Log。然后用SDL_GetError獲取錯(cuò)誤字符串并打印出來。

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

如果SDL成功初始化,我們將使用SDL_CreateWindow創(chuàng)建一個(gè)窗口。

第一個(gè)參數(shù)設(shè)置窗口的標(biāo)題;

接下來兩個(gè)參數(shù)分別是窗口的x和y,即窗口在屏幕上的位置,我們不關(guān)心位置在那里,所以直接傳SDL_WINDOWPOS_UNDEFINED即可;

接下來的兩個(gè)參數(shù)分別表示窗口的寬度和高度;

最后一個(gè)參數(shù)表示窗口創(chuàng)建成功之后顯示出來。

如果有錯(cuò)誤,SDL_CreateWindow 返回 NULL。我們將錯(cuò)誤打印到控制臺(tái)。

  //延遲5秒
    SDL_Delay(5000);
  //銷毀窗口
  SDL_DestroyWindow(window);
  //清理所有初始化的子系統(tǒng)
  SDL_Quit();
  return 0;
}

最后我們讓程序延遲5秒再退出,否則窗口會(huì)一閃而過;退出之前需要調(diào)用SDL_DestroyWindow手動(dòng)銷毀窗口和調(diào)用SDL_Quit清理所有初始化的子系統(tǒng)。

以下是創(chuàng)建成功的界面:

pYYBAGP8UhCAXTZNAAAVX7DCxGo083.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62237
  • char
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    3698
  • main
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    6114
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SDL編譯安裝圖片顯示

    ?SDL(Simple DirectMediaLayer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫,使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以
    的頭像 發(fā)表于 09-29 15:54 ?1407次閱讀
    <b class='flag-5'>SDL</b>編譯安裝圖片顯示

    SDL顯示文本

    ?? SDL2.0庫本身沒有文本數(shù)據(jù)顯示相關(guān)函數(shù)接口,文本顯示需要編譯安裝SDL_ttf庫。
    的頭像 發(fā)表于 09-29 16:32 ?1904次閱讀
    <b class='flag-5'>SDL</b>顯示文本

    SDL時(shí)間和天氣顯示

    ?SDL(Simple DirectMediaLayer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫,使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以
    的頭像 發(fā)表于 12-08 14:15 ?1111次閱讀

    Windows下基于MSVC搭建SDL開發(fā)環(huán)境

    Windows下基于MSVC搭建SDL開發(fā)環(huán)境
    的頭像 發(fā)表于 06-08 10:29 ?1466次閱讀
    Windows下基于MSVC搭建<b class='flag-5'>SDL</b>開發(fā)環(huán)境

    Microwindows窗口創(chuàng)建和消除

    消息的處理函數(shù)??梢酝ㄟ^預(yù)定的類型,如按鍵(button)、文本框(editboxs)等來定制窗口,同時(shí)也可以由用戶定義特殊的類型。無論通過什么方式定義類型,創(chuàng)建窗口和消息通訊的方法是相同的。與
    發(fā)表于 06-01 09:40

    SDL的交叉編譯問題

    求助??!移植SDL到mini2440開發(fā)板上時(shí),在交叉編譯SDL_image進(jìn)行configure之后,再make時(shí)出現(xiàn)如下錯(cuò)誤:/opt/mini2440/output/lib/libSDL.so
    發(fā)表于 12-06 20:50

    移植SDL到JZ2440顯示BMP圖片

    ,這就是編譯SDL所得到的文件 2、同樣編譯show_bmp_file.c,和之前不同的是,這次是交叉編譯$ cd ..$ cd show_bmp//這是筆者之前創(chuàng)建的目錄,用于存放測試程序
    發(fā)表于 06-29 11:19

    用Dialog創(chuàng)建窗口 在開發(fā)板上顯示的窗口創(chuàng)建的程序如何最大化?

    用Dialog創(chuàng)建窗口在開發(fā)板上顯示的窗口創(chuàng)建的程序一樣大,但是用QWidget和QMainWindow創(chuàng)建
    發(fā)表于 01-10 07:20

    【飛凌RK3588開發(fā)板試用】基于SDL進(jìn)行GUI程序開發(fā)

    cd SDL2-2.26.4/ 創(chuàng)建目錄mkdir build 配置./configure --prefix=$PWD/build 構(gòu)建安裝make && make install 編譯
    發(fā)表于 04-06 15:30

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】使用 SDL2 繪制窗口程序

    注意到starfive官方給出了libSDL2-dev的軟件包,使用SDL作為中間件可以跨平臺(tái)適配許多的界面庫,使用昉·星光2使用SDL2來繪制一個(gè)窗口 之前根據(jù)官方文檔中的說明,將
    發(fā)表于 08-05 18:54

    基于SDL的自動(dòng)售票系統(tǒng)的研發(fā)

    基于SDL 的自動(dòng)售票系統(tǒng)的研發(fā)顧麗麗 梅杓春(南京郵電大學(xué)自動(dòng)化學(xué)院,江蘇南京 210003)摘要:本文簡要介紹了SDL語言及其支持工具。通過設(shè)計(jì)自動(dòng)售票系統(tǒng)實(shí)例對(duì)如何利用SDL
    發(fā)表于 12-18 11:34 ?21次下載

    簡單窗口及菜單的例子

    簡單窗口及菜單的例子:  Dos匯編,Win32匯編,硬件資料,豐富的匯編、C 源代碼,編程例子詳解。
    發(fā)表于 05-06 16:36 ?9次下載

    利用C語言創(chuàng)建windows窗口的程序解析

    C語言創(chuàng)建windows窗口
    的頭像 發(fā)表于 01-15 10:42 ?1.1w次閱讀
    利用C語言<b class='flag-5'>創(chuàng)建</b>windows<b class='flag-5'>窗口</b>的程序解析

    Qt自定義窗口部件的創(chuàng)建

    通過對(duì)一個(gè)已經(jīng)存在的Qt窗口部件進(jìn)行子類化或者直接對(duì)QWidget進(jìn)行子類化,就可以創(chuàng)建自定義窗口部件。以下直接對(duì)已有的Qt窗口部件進(jìn)行子類化
    發(fā)表于 09-09 09:00 ?2398次閱讀

    SDL下載與配置

    點(diǎn)擊[SDL2 核心庫下載](https://libsdl.org/download-2.0.php)下載SDL2庫,如下圖根據(jù)編譯器選擇不同版本(Visual Studo系列選擇第一個(gè))。
    的頭像 發(fā)表于 02-27 14:51 ?2858次閱讀
    <b class='flag-5'>SDL</b>下載與配置