但是有一个问题:这个效果会在一开始创建窗口时就生效。如果希望实现创建窗口后,窗口暂时不显示,那么此时这个阴影还是会出现,看起来就很怪。
为了试图在窗口真正显示时才显示边框,我尝试过以下几种办法:
1. 在CreateWindowEx时,不设WS_VISIBLE,而是在之后再SetWindowLongPtr,加上WS_VISIBLE属性;
2. 在CreateWindowEx时,窗口大小设为0,之后再MoveWindow;
3. 在RegisterClass之前,窗口类不设置CS_DROPSHADOW,之后再SetClassLongPtr,加上CS_DROPSHADOW;
4. 在CreateWindowEx之前,先SystemParametersInfo,禁用SPI_SETDROPSHADOW为FALSE,再在之后设为TRUE;
以上四种操作结果都是同样的:在窗口创建时,确实没有阴影了;但是在窗口真正显示时,还是没有阴影效果。也就是说,这东西似乎只有在CreateWindowEx的当时如果显示,才能显示,否则就永远显示不出来了……不知道有没有其它解决办法。