1) Le funzioni che terminano con Ex sono funzioni che estendono le funzionalità della stessa funzione che non termina con Ex. Nello specifico la CreateWindowEx permette di specificare il parametro dwExStyle che come riporta msdn: "Specifies the extended window style of the window being created".
2) Allora se tu controlli i vari file che vengono tipicamente inclusi in un progetto win32 noterai che in tali file sono specificati i prototipi della maggior parte delle API più comuni, a loro volta la maggior parte dei prototipi delle API (quelle che utilizzano come parametri tipi STR) presentano 2 versioni la xA e la xW, in seguito tali prototipi vengono ridefiniti a seconda che sia definito unicode o no.
Esempio preso da winbase.h di vs:
codice:
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileA(
__in LPCSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileW(
__in LPCWSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
#ifdef UNICODE
#define CreateFile CreateFileW
#else
#define CreateFile CreateFileA
#endif // !UNICODE
3) Devi inizializzare i common control attraverso la funzione InitCommonControlsEx, dopo di che devi aggiungere al tuo progetto un file manifest, cerca su google e trovi sicuramente le informazioni necessarie
4)Certamente, quando dichiari la struttura WNDCLASSEX, e ne inizializzi i membri basta modificare a piacere il membro hbrBackground. QUI maggiori informazioni