I typedef mancanti (HANDLE
ecc.) non sono un tuo problema. Il tuo problema è che Linux e Windows hanno API completamente diverse, non puoi semplicemente sperare di trasferire l'una sull'altra sostituendo alcune definizioni di tipo.
La parte completa del codice dipendente dalla piattaforma deve essere sostituita. Il tuo primo passo è quindi imparare l'API di Linux. Il modo migliore per farlo è procurarsi un libro sulla programmazione Linux.
Inoltre, Linux non fornisce un'API predefinita per la gestione delle finestre come Windows, quindi se stai programmando un'applicazione grafica, devi scegliere anche una libreria di finestre.
Non c'è un "equivalente", per così dire, per windows.h in Linux, devi correggere i tuoi errori caso per caso, o meglio, riscrivere il tuo codice per linux (se non è troppo complicato).
Tuttavia, se ignoriamo le API specifiche di Windows, potresti essere in grado di correggere gli errori typedef (DWORD, HANDLE, ...):
#ifndef DWORD
#define WINAPI
typedef unsigned long DWORD;
typedef short WCHAR;
typedef void * HANDLE;
#define MAX_PATH PATH_MAX
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int BOOL;
#endif
codice sorgente typedef