Files
PathEditor/src/main.c
T
Serendipity c92d20b4b3 refactor: 将IUP控件从IupMatrix迁移到IupFlatList
简化代码结构并移除对iupcontrols库的依赖。主要变更包括:
- 用IupFlatList替换IupMatrix,简化列表操作API
- 移除iupcontrols.dll和iupimglib.dll依赖,减少部署文件大小
- 更新CMake配置和安装脚本以匹配新的依赖关系
- 重写列表操作函数以使用IupFlatList的API(VALUE、COUNT等属性)
- 调整回调函数签名以匹配新控件的事件参数
- 简化UI创建代码,移除不再需要的图标和属性设置
2026-03-19 20:03:29 +08:00

73 lines
1.7 KiB
C

#include <iup.h>
#include <stdio.h>
#include <stdlib.h>
#include "globals.h"
#include "utils.h"
#include "registry.h"
#include "ui.h"
#include "cb_main.h"
/*
!编译命令:
cmake -B build -G "MinGW Makefiles"
cmake --build build
!打包命令:
build_installer.bat
*/
// 主函数
int main(int argc, char **argv)
{
// 初始化 IUP
if (IupOpen(&argc, &argv) == IUP_ERROR)
{
return 1;
}
// 开启 UTF-8 支持
IupSetGlobal("UTF8MODE", "YES");
// 启用 UIPI 绕过,允许拖拽
HMODULE hUser32 = LoadLibraryA("user32.dll");
if (hUser32)
{
typedef BOOL(WINAPI * ChangeWindowMessageFilterProc)(UINT, DWORD);
ChangeWindowMessageFilterProc pChangeWindowMessageFilter = (ChangeWindowMessageFilterProc)GetProcAddress(hUser32, "ChangeWindowMessageFilter");
if (pChangeWindowMessageFilter)
{
// WM_DROPFILES = 0x0233, WM_COPYDATA = 0x004A, MSGFLT_ADD = 1
pChangeWindowMessageFilter(0x0233, 1);
pChangeWindowMessageFilter(0x004A, 1);
}
FreeLibrary(hUser32);
}
// 初始化历史栈
init_history_stack(&undo_stack);
init_history_stack(&redo_stack);
// 创建主界面
dlg = create_main_dialog();
// 设置全局按键回调 (如果在 ui.c 中未设置)
IupSetCallback(dlg, "K_ANY", (Icallback)dialog_k_any_cb);
// 加载数据
if (!check_admin())
{
IupMessage("警告", "未检测到管理员权限!\n您可能无法保存更改。\n请右键以【管理员身份运行】。");
}
load_all_paths();
// 显示对话框
IupShowXY(dlg, IUP_CENTER, IUP_CENTER);
// 进入主循环
IupMainLoop();
// 清理资源
IupClose();
return 0;
}