#include int main() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { SDL_Log("Unable to initialize SDL: %s", SDL_GetError())">

c语言如何调整窗口大小

来源:这里教程网 时间:2026-02-21 16:49:31 作者:

如何调整 C 语言窗口大小

在 C 语言中,调整窗口大小需要使用以下步骤:

1. 初始化 SDL 库

<code class="c">#include <SDL2/SDL.h>
int main() {
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
        return 1;
    }
}</code>

2. 创建窗口

立即学习“C语言免费学习笔记(深入)”;

<code class="c">SDL_Window* window = SDL_CreateWindow("My Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_RESIZABLE);</code>

其中,

640
480
是初始窗口宽高,
SDL_WINDOW_RESIZABLE
表示窗口可调整大小。

3. 获取窗口大小

<code class="c">int width, height;
SDL_GetWindowSize(window, &width, &height);</code>

4. 设置新窗口大小

<code class="c">SDL_SetWindowSize(window, new_width, new_height);</code>

其中,

new_width
new_height
是新窗口宽高。

5. 捕获窗口调整事件

<code class="c">SDL_Event event;
while (SDL_WaitEvent(&event)) {
    if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
        // 窗口调整大小事件
    }
}</code>

6. 清理 SDL

<code class="c">SDL_Quit();</code>

示例代码:

<code class="c">#include <SDL2/SDL.h>
int main() {
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
        return 1;
    }
    SDL_Window* window = SDL_CreateWindow("My Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_RESIZABLE);
    if (!window) {
        SDL_Log("Unable to create window: %s", SDL_GetError());
        return 1;
    }
    int width, height;
    SDL_GetWindowSize(window, &width, &height);
    while (true) {
        SDL_Event event;
        while (SDL_WaitEvent(&event)) {
            if (event.type == SDL_QUIT) {
                break;
            } else if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
                width = event.window.data1;
                height = event.window.data2;
            }
        }
        // 渲染代码...
        SDL_UpdateWindowSurface(window);
    }
    SDL_Quit();
    return 0;
}</code>

相关推荐