I don't know about nicer, but we do have wined3d_check_device_format(), and we already use that for a fairly similar purpose in ddraw_surface_create().
I thought about that, but it didn't seem simpler than the current approach, and I'm not sure if it's really a conceptual improvement either. Though if it strikes you as one I can certainly change the patch accordingly.