Files
2026-06-12 16:54:32 +08:00

1.6 KiB

check_save.c - 保存确认对话框

概述

这是一个GTK+图形界面程序,用于在多显示器环境下显示保存确认对话框。用户可以在任意显示器上点击"保存"或"取消"按钮,程序会返回相应的退出代码供调用方判断。

程序结构

数据结构

typedef struct {
    GtkWidget *window;  // GTK窗口指针
    int monitor_num;    // 显示器编号
    int x, y;           // 显示器位置
    int width, height;  // 显示器分辨率
    char *name;         // 显示器名称/接口名
} MonitorInfo;

全局变量

  • monitors: 显示器信息数组
  • monitor_count: 显示器数量
  • app: GTK应用程序实例
  • exit_code: 退出代码(默认1=取消)

工作原理

  1. 初始化阶段: 检查DISPLAY环境变量,创建GTK应用
  2. 显示器枚举: 使用gdk_screen_get_n_monitors()获取所有显示器信息
  3. 窗口创建: 为每个显示器创建一个400x200的居中确认窗口
  4. 用户交互:
    • 点击"保存" → 打印"0",退出代码=0
    • 点击"取消并退出" → 打印"1",退出代码=1
    • 关闭窗口 → 打印"1",退出代码=1

关键函数

函数 功能
activate() 应用启动回调,枚举显示器并创建窗口
create_monitor_window() 为指定显示器创建确认窗口
on_save_clicked() 保存按钮回调
on_cancel_clicked() 取消按钮回调
show_error_dialog() 显示错误对话框

调用方式

./check_save
# 返回值: 0=保存, 1=取消

依赖

  • GTK+ 3.x
  • GDK (含X11后端)