From 7fac2aab3558c981852ab5c08aca89094fc8bf20 Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Wed, 18 Mar 2026 21:01:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BB=A5=E6=8F=90=E5=8F=96=E9=85=8D=E7=BD=AE=E5=92=8C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 Windows 消息常量和 UI 配置常量分别提取到 globals.h 和 config.h 头文件中,提高可维护性 - 将全局变量和控件定义从 main.c 移至独立的 globals.c 源文件,实现关注点分离 - 更新 Makefile 以包含新的源文件 globals.c - 在 ui.c 和 main.c 中引用 config.h,使用配置常量替代硬编码的 UI 参数 --- Makefile | 7 +++++-- bin/PathEditor.exe | Bin 231902 -> 232167 bytes include/config.h | 28 ++++++++++++++++++++++++++++ include/globals.h | 10 ++++++++++ src/globals.c | 14 ++++++++++++++ src/main.c | 31 ++++++------------------------- src/ui.c | 37 +++++++++++++++++++------------------ 7 files changed, 82 insertions(+), 45 deletions(-) create mode 100644 include/config.h create mode 100644 src/globals.c diff --git a/Makefile b/Makefile index 4b160c3..1da684a 100644 --- a/Makefile +++ b/Makefile @@ -18,9 +18,9 @@ CFLAGS = -Wall -O2 -I$(INCLUDE_DIR) -I$(LOCAL_INCLUDE_DIR) -D_WIN32 -DUNICODE -D LDFLAGS = -L$(LIB_DIR) -liup -liupcd -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32 -ladvapi32 -mwindows # Source -SRC = src/main.c src/utils.c src/registry.c src/callbacks.c src/ui.c +SRC = src/main.c src/utils.c src/registry.c src/callbacks.c src/ui.c src/globals.c RES = ico/resources.rc -OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/callbacks.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/resources.o +OBJ = $(OBJ_DIR)/main.o $(OBJ_DIR)/utils.o $(OBJ_DIR)/registry.o $(OBJ_DIR)/callbacks.o $(OBJ_DIR)/ui.o $(OBJ_DIR)/globals.o $(OBJ_DIR)/resources.o EXE = $(BIN_DIR)/PathEditor.exe all: $(BIN_DIR) $(OBJ_DIR) $(EXE) @@ -49,6 +49,9 @@ $(OBJ_DIR)/callbacks.o: src/callbacks.c $(OBJ_DIR)/ui.o: src/ui.c $(CC) $(CFLAGS) -c -o $@ $< +$(OBJ_DIR)/globals.o: src/globals.c + $(CC) $(CFLAGS) -c -o $@ $< + $(OBJ_DIR)/resources.o: ico/resources.rc $(WINDRES) -i $< -o $@ diff --git a/bin/PathEditor.exe b/bin/PathEditor.exe index 0bce9f1892f6d6cc9520ba9d101662a4a4ccfc86..41babf2d118692e18472ba7acba88994b9ffd71b 100644 GIT binary patch delta 10483 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 +// 定义 Windows 消息常量 +#ifndef WM_COPYGLOBALDATA +#define WM_COPYGLOBALDATA 0x0049 +#endif + +// 消息过滤器常量 +#ifndef MSGFLT_ADD +#define MSGFLT_ADD 1 +#endif + // 注册表路径常量 #define REG_PATH_SYS L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment" #define REG_PATH_USER L"Environment" diff --git a/src/globals.c b/src/globals.c new file mode 100644 index 0000000..5621e44 --- /dev/null +++ b/src/globals.c @@ -0,0 +1,14 @@ +#include "globals.h" +#include +#include + +// 全局变量定义 +StringList raw_sys_paths = {0}; +StringList raw_user_paths = {0}; + +// 全局控件定义 +Ihandle *dlg, *tabs_main, *list_sys, *list_user, *lbl_status; // 主窗口、标签页、系统路径列表、用户路径列表、状态标签 +Ihandle *btn_new, *btn_edit, *btn_browse, *btn_del, *btn_up, *btn_down; // 右侧按钮 +Ihandle *btn_ok, *btn_cancel, *btn_help; // 确认取消帮助按钮 +Ihandle *btn_clean; // 一键清理按钮 +Ihandle *txt_search; // 搜索框 \ No newline at end of file diff --git a/src/main.c b/src/main.c index b72ff57..b8c795b 100644 --- a/src/main.c +++ b/src/main.c @@ -8,26 +8,7 @@ #include "registry.h" #include "callbacks.h" #include "ui.h" - -// 定义 Windows 消息常量 -#ifndef WM_COPYGLOBALDATA -#define WM_COPYGLOBALDATA 0x0049 -#endif - -#ifndef MSGFLT_ADD -#define MSGFLT_ADD 1 -#endif - -// 全局变量定义 -StringList raw_sys_paths = {0}; -StringList raw_user_paths = {0}; - -// 全局控件定义 -Ihandle *dlg, *tabs_main, *list_sys, *list_user, *lbl_status; // 主窗口、标签页、系统路径列表、用户路径列表、状态标签 -Ihandle *btn_new, *btn_edit, *btn_browse, *btn_del, *btn_up, *btn_down; // 右侧按钮 -Ihandle *btn_ok, *btn_cancel, *btn_help; // 确认取消帮助按钮 -Ihandle *btn_clean; // 一键清理按钮 -Ihandle *txt_search; // 搜索框 +#include "config.h" // 主函数 int main(int argc, char **argv) @@ -80,8 +61,8 @@ int main(int argc, char **argv) // 上部布局:Tabs + 按钮 Ihandle *hbox_main = IupHbox(tabs_main, vbox_btns, NULL); - IupSetAttribute(hbox_main, "GAP", "10"); - IupSetAttribute(hbox_main, "MARGIN", "10x10"); + IupSetAttribute(hbox_main, "GAP", UI_HBOX_GAP); + IupSetAttribute(hbox_main, "MARGIN", UI_HBOX_MARGIN); // 状态标签 lbl_status = IupLabel("状态: 就绪"); @@ -97,13 +78,13 @@ int main(int argc, char **argv) hbox_main, hbox_bottom, NULL); - IupSetAttribute(vbox_all, "MARGIN", "10x10"); - IupSetAttribute(vbox_all, "GAP", "5"); + IupSetAttribute(vbox_all, "MARGIN", UI_VBOX_ALL_MARGIN); + IupSetAttribute(vbox_all, "GAP", UI_VBOX_ALL_GAP); // 创建对话框 dlg = IupDialog(vbox_all); IupSetAttribute(dlg, "TITLE", "编辑环境变量 (IUP版)"); - IupSetAttribute(dlg, "SIZE", "500x400"); // 稍微调大一点 + IupSetAttribute(dlg, "SIZE", UI_DLG_SIZE); // 稍微调大一点 IupSetAttribute(dlg, "MINBOX", "NO"); IupSetAttribute(dlg, "MAXBOX", "NO"); diff --git a/src/ui.c b/src/ui.c index ddfbe94..5cfc21e 100644 --- a/src/ui.c +++ b/src/ui.c @@ -1,6 +1,7 @@ #include "ui.h" #include "globals.h" #include "callbacks.h" +#include "config.h" #include // 创建列表控件 @@ -8,8 +9,8 @@ Ihandle *create_path_list() { Ihandle *list = IupFlatList(); IupSetAttribute(list, "EXPAND", "YES"); - IupSetAttribute(list, "ITEMPADDING", "5x5"); - IupSetAttribute(list, "BACKCOLOR", "255 255 255"); + IupSetAttribute(list, "ITEMPADDING", UI_LIST_ITEM_PADDING); + IupSetAttribute(list, "BACKCOLOR", UI_LIST_BACKCOLOR); IupSetAttribute(list, "BORDER", "YES"); IupSetAttribute(list, "CANFOCUS", "YES"); IupSetAttribute(list, "HLINE", "NO"); @@ -40,14 +41,14 @@ Ihandle *create_main_buttons() IupSetCallback(btn_down, "ACTION", (Icallback)btn_down_cb); IupSetCallback(btn_clean, "ACTION", (Icallback)btn_clean_cb); - // 设置按钮大小 (宽度和高度都增加约1/4) - IupSetAttribute(btn_new, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_edit, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_browse, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_del, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_up, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_down, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_clean, "RASTERSIZE", "100x32"); + // 设置按钮大小 + IupSetAttribute(btn_new, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_edit, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_browse, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_del, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_up, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_down, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_clean, "RASTERSIZE", UI_BTN_RASTERSIZE); Ihandle *vbox_btns = IupVbox( btn_new, btn_edit, btn_browse, btn_del, @@ -56,8 +57,8 @@ Ihandle *create_main_buttons() IupFill(), btn_up, btn_down, NULL); - IupSetAttribute(vbox_btns, "GAP", "5"); - IupSetAttribute(vbox_btns, "MARGIN", "0x0"); + IupSetAttribute(vbox_btns, "GAP", UI_VBOX_GAP); + IupSetAttribute(vbox_btns, "MARGIN", UI_VBOX_MARGIN); return vbox_btns; } @@ -74,14 +75,14 @@ Ihandle *create_bottom_buttons() IupSetCallback(btn_cancel, "ACTION", (Icallback)btn_cancel_cb); IupSetCallback(btn_help, "ACTION", (Icallback)btn_help_cb); - IupSetAttribute(btn_ok, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_cancel, "RASTERSIZE", "100x32"); - IupSetAttribute(btn_help, "RASTERSIZE", "100x32"); + IupSetAttribute(btn_ok, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_cancel, "RASTERSIZE", UI_BTN_RASTERSIZE); + IupSetAttribute(btn_help, "RASTERSIZE", UI_BTN_RASTERSIZE); Ihandle *hbox_bottom = IupHbox(lbl_status, IupFill(), btn_help, btn_ok, btn_cancel, NULL); - IupSetAttribute(hbox_bottom, "GAP", "10"); - IupSetAttribute(hbox_bottom, "MARGIN", "10x10"); - IupSetAttribute(hbox_bottom, "ALIGNMENT", "ACENTER"); + IupSetAttribute(hbox_bottom, "GAP", UI_HBOX_GAP); + IupSetAttribute(hbox_bottom, "MARGIN", UI_HBOX_MARGIN); + IupSetAttribute(hbox_bottom, "ALIGNMENT", UI_HBOX_ALIGNMENT); return hbox_bottom; } \ No newline at end of file