A Windows desktop application for managing genealogical data in GEDCOM format. Built in the style of a classic Petzold Win32 application using C++.
- GEDCOM Import/Export: Full support for GEDCOM 5.5 and 5.5.1 file formats
- Multiple Tree Management: Work with multiple family trees simultaneously via the dashboard
- Person Management: Add, edit, and delete individuals with full biographical data
- Family Management: Create and manage family units with spouse and children relationships
- Pedigree View: Classic ancestor chart showing parents, grandparents, etc.
- Descendant View: Shows all descendants of a selected individual
- Family Group View: Displays family units with parents and children
- Timeline View: Chronological view of events
- Relationship Calculator: Determine the relationship between any two people
- Common Ancestor Finder: Find shared ancestors between individuals
- Search: Full-text search across names, places, dates, and notes
- Filtering: Filter individuals by surname, dates, places, and living status
- Statistics: Comprehensive statistics about your family tree
- Auto-save: Configurable automatic saving
- Backup: Automatic backup creation on save
- Recent Files: Quick access to recently opened trees
- Settings: Customizable date formats, name formats, and more
- MinGW-w64 (GCC for Windows)
- Windows SDK headers (included with MinGW-w64)
# Build release version
make
# Build with debug symbols
make debug
# Clean build artifacts
make clean
# Rebuild everything
make rebuildThe build produces famtree.exe, a standalone Windows executable.
famtree/
├── famtree.cpp # Application entry point and main loop
├── dashboard.cpp/h # Main dashboard window
├── treeview.cpp/h # Family tree view window
├── dialogs.cpp/h # All dialog implementations
├── person.cpp/h # Person/individual management
├── family.cpp/h # Family unit management
├── gedcom.cpp/h # GEDCOM parser and exporter
├── analysis.cpp/h # Relationship and analysis functions
├── storage.cpp/h # Settings and file management
├── types.h # Common type definitions
├── resource.h # Resource identifiers
├── famtree.rc # Resource script (menus, dialogs, icons)
├── famtree.ico # Application icon
├── famtree.manifest # Windows manifest for visual styles
└── Makefile # Build configuration
- Launch
famtree.exe - Click "New Tree" to create a new family tree, or "Import" to import a GEDCOM file
- Use the tree window to add persons and families
- Save your work as a GEDCOM file for portability
| Shortcut | Action |
|---|---|
| Ctrl+N | New Tree |
| Ctrl+O | Open Tree |
| Ctrl+S | Save |
| Ctrl+W | Close |
| Ctrl+F | Search |
| Ctrl+Z | Undo |
| Insert | Add Person |
| Enter | Edit Selected |
| Delete | Delete Selected |
| F5 | Refresh View |
| F1 | Help |
FamTree supports the following GEDCOM features:
- Individual records (INDI)
- Family records (FAM)
- Source citations (SOUR)
- Standard events (BIRT, DEAT, MARR, DIV, etc.)
- Notes and dates with modifiers (ABT, BEF, AFT, etc.)
- ANSEL, ASCII, and UTF-8 character encodings
The application follows classic Win32 programming patterns:
- Window class registration and message loop in main
- Separate window procedures for dashboard and tree views
- Modal dialogs for editing
- Linked lists for in-memory data storage
- Registry/INI file for settings persistence
Copyright (c) 2025 Alex Thies
See LICENSE.md for details.
Contributions are welcome! Please ensure your code:
- Follows the existing coding style (C with classes, Win32 API)
- Includes appropriate comments
- Maintains GEDCOM compatibility
- Works on Windows 7 and later