#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)建成功的界面:

-
函數(shù)
+關(guān)注
關(guān)注
3文章
4365瀏覽量
63952 -
char
+關(guān)注
關(guān)注
0文章
11瀏覽量
3780 -
main
+關(guān)注
關(guān)注
0文章
38瀏覽量
6324
發(fā)布評(píng)論請(qǐng)先 登錄
SDL編譯安裝圖片顯示

SDL時(shí)間和天氣顯示
Microwindows窗口的創(chuàng)建和消除
SDL的交叉編譯問題
移植SDL到JZ2440顯示BMP圖片
用Dialog創(chuàng)建窗口 在開發(fā)板上顯示的窗口和創(chuàng)建的程序如何最大化?
【飛凌RK3588開發(fā)板試用】基于SDL進(jìn)行GUI程序開發(fā)
【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】使用 SDL2 繪制窗口程序
基于SDL的自動(dòng)售票系統(tǒng)的研發(fā)
簡(jiǎn)單的窗口及菜單的例子
Qt自定義窗口部件的創(chuàng)建
SDL下載與配置

評(píng)論