C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[339] 황당팁.. 윈도우 바탕화면 배경그림 바꾸기
김상구.패패루 [peperu] 8463 읽음    2002-05-28 14:20
보통 배경그림 바꿀 때 두가지 방법을 씁니다.
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시간이나 헤맨게..
양군 [bugslayer]   2002-08-19 18:10 X
프로그래밍은 역시 삽질이야 ㅡ_-ㅋ

+ -

관련 글 리스트
339 황당팁.. 윈도우 바탕화면 배경그림 바꾸기 김상구.패패루 8463 2002/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.