Hasta ahora vas bien, pero solo estas cargando el icono en memoria.
Siguiendo tu propio codigo y siendo el HWND del dialogo principal mainDlgHandle podrias hacer esto por ejemplo:
Código:
HICON mainIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MAIN_ICON));
SetClassLong(mainDlgHandle, GCL_HICON, (LONG)mainIcon);
DestroyIcon(mainIcon);