1.6 KiB
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=取消)
工作原理
- 初始化阶段: 检查DISPLAY环境变量,创建GTK应用
- 显示器枚举: 使用
gdk_screen_get_n_monitors()获取所有显示器信息 - 窗口创建: 为每个显示器创建一个400x200的居中确认窗口
- 用户交互:
- 点击"保存" → 打印"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后端)