PlummersSoftwareLLC/retropad

GitHub: PlummersSoftwareLLC/retropad

用纯 C 语言和 Win32 API 实现的经典 Windows 记事本克隆,支持编码感知的文件读写和完整的编辑功能。

Stars: 352 | Forks: 64

# retropad 一个用几乎纯 C 语言编写的、Petzold 风格的 Win32 记事本克隆版。它保留了经典的菜单、快捷键、自动换行切换、状态栏、查找/替换、字体选择器、时间/日期插入以及感知 BOM 的加载/保存功能。有意省略了打印功能。 ## 前置条件 (Windows) - Git - Visual Studio 2022(或 Build Tools)以及“使用 C++ 的桌面开发”工作负载 - 使用“x64 Native Tools Command Prompt for VS 2022”(或任何 Developer Command Prompt),以便 `cl`、`rc` 和 `nmake` 位于你的 `PATH` 中。 可选:用于 `make` + `gcc` 的 MinGW-w64(包含一个单独的 POSIX 风格 `Makefile`)。 ## 获取代码 ``` git clone https://github.com/your/repo.git retropad cd retropad ``` ## 使用 MSVC (`nmake`) 构建 在 Developer Command Prompt 中: ``` nmake /f makefile ``` 这将依次运行 `rc` 和 `cl`,并在仓库根目录下生成 `retropad.exe`。使用以下命令进行清理: ``` nmake /f makefile clean ``` ## 使用 MinGW 构建(可选) 如果你的 PATH 中包含 `gcc`、`windres` 和 `make`: ``` make ``` 生成的文件将位于仓库根目录(`retropad.exe`、object 文件以及 `retropad.res`)。使用 `make clean` 进行清理。 ## 运行 双击 `retropad.exe` 或在命令提示符下启动: ``` .\retropad.exe ``` ## 功能与说明 - 菜单/快捷键:文件、编辑、格式、查看、帮助;经典的记事本按键绑定(Ctrl+N/O/S、Ctrl+F、F3、Ctrl+H、Ctrl+G、F5 等)。 - 自动换行切换横向滚动;在换行时状态栏会自动隐藏,取消换行时恢复。 - 查找/替换对话框(标准的 `FINDMSGSTRING`),跳转到(开启自动换行时禁用)。 - 字体选择器 (ChooseFont),时间/日期插入,拖拽打开文件。 - 文件 I/O:检测 UTF-8/UTF-16 BOM,回退到 UTF-8/ANSI 启发式方法;默认以 UTF-8 BOM 保存。 - 打印/页面设置菜单项按设计显示“未实现”提示。 - 图标:通过 `retropad.rc` 从 `res/retropad.ico` 链接为主应用程序图标。 ## 项目结构 - `retropad.c` — WinMain、窗口过程、UI 逻辑、查找/替换、菜单、布局。 - `file_io.c/.h` — 文件打开/保存对话框以及感知编码的加载/保存辅助程序。 - `resource.h` — 资源 ID。 - `retropad.rc` — 菜单、快捷键、对话框、版本信息、图标。 - `res/retropad.ico` — 应用程序图标。 - `makefile` — MSVC `nmake` 构建脚本。 - `Makefile` — MinGW/GNU make 构建脚本。 ## 常见构建问题 - 如果缺少 `nmake`,请使用 Developer Command Prompt(它会设置 `PATH`)。 - 如果看到有关 ASCII/虚拟键的 RC4204 警告,它们是良性的,源自控制键快捷键行。 - 如果找不到 `rc`/`cl`,请重新运行 `vcvarsall.bat` 或重新打开 Developer Command Prompt。
标签:Gophish, Linux, Win32 API, 安全意识培训, 客户端加密, 文本编辑器, 桌面应用, 记事本