Chuck,
I can't get it to work either. If I were to hazard a SWAG, it's got something to do with the difference between the way VFP processes windows messages in top-level vs. non-top-level. Checking the debugger, everything gets initialize properly (the window handle, device context, icon handles), and DrawIcon() returns 1 (indicating success). Works fine, however, when the Desktop property is set to .T. I guess that's the only workaround. Set SCREEN=OFF in the config.
In the main prg, set top and left to -1000, then set visible = .T. That's a kludge, but it should work.
George
Ubi caritas et amor, deus ibi est