···11+# TaskbarCalculator
22+33+TaskbarCalculator è un'applicazione C++/Win32 per Windows 11 che risiede nell'area di
44+notifica (system tray) e mostra una finestra calcolatrice sempre in primo piano,
55+utilizzabile da tastiera.
66+77+Il progetto nasce come migrazione di una precedente DeskBand (un'estensione COM in-process
88+ospitata dalla taskbar), non più caricabile su Windows 11 dalla shell per estensioni di
99+terze parti. La versione attuale è un eseguibile standalone che aggiunge un'icona nell'area
1010+di notifica: click sinistro mostra/nasconde la finestra, click destro apre un menu con le
1111+opzioni Show/Hide, Start at login, About ed Exit.
1212+1313+## Struttura del codice
1414+1515+- `App.cpp` — punto di ingresso (`wWinMain`), gestione singola istanza, icona di tray e
1616+ finestra proprietaria nascosta.
1717+- `CalculatorWindow.cpp/.h` — finestra della calcolatrice, gestione input da tastiera,
1818+ formattazione dei numeri secondo le impostazioni regionali, posizionamento e persistenza.
1919+- `Calculator.cpp/.h` — motore di calcolo, indipendente dalla UI, basato su una macchina a
2020+ stati (`init`, `first_oper`, `operation`, `second_oper`, `result`, `error`). Supporta le
2121+ quattro operazioni di base, radice quadrata, percentuale, cambio di segno, reciproco
2222+ (1/x).
2323+- `Settings.cpp/.h`, `StartupManager.cpp/.h`, `VisualStyle.cpp/.h`, `TrayIcon.cpp/.h`,
2424+ `Utils.cpp/.h` — moduli di supporto (registro per posizione/visibilità finestra, avvio
2525+ automatico al login, tema classico/moderno, icona di tray, utilità varie).
2626+2727+Dettagli più approfonditi su architettura e convenzioni si trovano in `CLAUDE.md`.
2828+2929+## Build
3030+3131+Richiede Visual Studio 2022 (toolset v143), Windows SDK 10.0.26100.0 e i componenti
3232+C++/WinRT per la funzionalità di avvio al login.
3333+3434+```
3535+msbuild TaskbarCalculator.vcxproj /p:Configuration=Debug /p:Platform=x64
3636+msbuild TaskbarCalculator.vcxproj /p:Configuration=Release /p:Platform=x64
3737+```
3838+3939+Va compilato il file `.vcxproj` direttamente, non la `.sln` (che referenzia un progetto di
4040+setup non presente in questo repository). L'eseguibile viene prodotto in
4141+`x64\<Config>\TaskbarCalculator.exe`.
4242+4343+## Test
4444+4545+Il motore di calcolo (`Calculator.cpp/.h`) è indipendente dal precompiled header e viene
4646+compilato ed eseguito separatamente con un piccolo harness header-only:
4747+4848+```
4949+tests\build-and-run.cmd
5050+```
5151+5252+da un prompt "x64 Native Tools Command Prompt".
5353+5454+## Packaging
5555+5656+Sono previste due modalità di distribuzione:
5757+5858+- **Installer classico**: `Packaging\TaskbarCalculatorSetup.iss`, compilato con Inno Setup
5959+ (`ISCC.exe`), oppure tramite lo script `Packaging\build-setup.cmd` che esegue build
6060+ Release x64 e compilazione dell'installer in un solo passaggio.
6161+- **MSIX**: script PowerShell in `Packaging\` (`MakeAssets.ps1`, `MakeCert.ps1`,
6262+ `BuildMsix.ps1`), mantenuto in vista di una eventuale pubblicazione sul Microsoft Store.
6363+6464+In entrambi i casi l'avvio automatico al login usa l'API MSIX `StartupTask` quando
6565+l'applicazione è pacchettizzata, con fallback sulla chiave di registro
6666+`HKCU\...\Run` quando è installata in modalità classica.