Bill,
You can find the size of the screen with:
IX=GetSystemMetrics(SM_CXSCREEN)
IY=GetSystemMetrics(SM_CYSCREEN)
and then choose the icon size appropriately. It's a matter of doing it once somewhere near program startup, and saving the size. I have programs where I check the aspect ratio and if it is widescreen, put my toolbar down the lefthand side rather than along the top so that the client area is taller than otherwise.
It's a bit like looking at the parameters for a printer:
ixdpi = GetDeviceCaps(jHDC, LOGPIXELSX)
iydpi = GetDeviceCaps(jHDC, LOGPIXELSY)
jXRES = GetDeviceCaps(jHDC, HORZRES)
jYRES = GetDeviceCaps(jHDC, VERTRES)
I have a logo bitmap in several resolutions for stamping on a hardcopy output. For example, a logo that looks good on a 300dpi printer is tiny at 2400dpi, and the other way round a logo designed for 2400dpi takes up too much room on a 300dpi page.
The worse problem arises if your user tries the software out at the minimum Windows-acceptable resolution. You can refuse to run if the screen isn't big enough.
Eddie