보통 배경그림 바꿀 때 두가지 방법을 씁니다.
IActiveDesktop을 이용한 방법 - 요건 쓰는게 쪼꼼 복잡합니다.
SystemParametersInfo() API함수를 이용하는 방법
최근에 간단하게 이런 일을 해 주는 프로그램을 만들었는데 XP하고 98에서는 잘 되던 놈이 2000에서는 죽어라고 안되더군요.
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"c:\\windows\\mypicture.bmp",SPIF_UPDATEINIFILE);
이렇게 해도 안되고
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"c:\\windows\\mypicture.bmp",SPIF_SENDCHANGE);
이렇게 해도 안되고..
두가지 차이는 아시는 분은 아시겠지만 하나는 영구적으로 바꾸는거고 하나는 임시로 바꾼 뒤 바뀌었다고 메시지를 다른 윈도우에 브로드캐스팅하는겁니다. XP나 98에서는 양쪽 모두 정상 동작합니다.
이상하게 2000에서만 오동작을 해서 한참을 고민하다가.. 너무 황당하게 해결이 되었습니다.
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"c:\\windows\\mypicture.bmp",SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
정답은 이거더군요.. 두 옵션을 동시에 줄 때만 2000에서는 정상동작하더라.. 이겁니다..
어흑...
너무 슬포.. 이딴거땜시 2시간이나 헤맨게..
|