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, 安全意识培训, 客户端加密, 文本编辑器, 桌面应用, 记事本