IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Изменение рисунка рабочего стола, VS C++
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Попыталась изменить рисунок на рабочем столе с использованием функции SystemParametersInfo:


char filename[15];
strcpy(filename,"D:\Lab1.bmp");
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,&filename,SPIF_SENDWININICHANGE);
DWORD dwError = GetLastError();
printf("LastError() = %d \n", dwError);



Проблема в том, что указанный рисунок не устанавливается на рабочем столе...а использование GetLastError() свидетельствует о том, что произошла ошибка №2 - Файл не найден...
Скажите пожалуйста, в чём может быть причина?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, во-первых, С++ это не Дельфи, обратный слэш должен быть двойным... А во-вторых (насколько я помню) ты можешь поменять картинку только на тот файл, который хранится там же, где все остальные картинки десктопов Windows... У меня получилось вот так:
#include <tchar.h>
...
::SystemParametersInfo(
SPI_SETDESKWALLPAPER,
0,
_T("C:\\WINDOWS\\Web\\Wallpaper\\my_pic.bmp"),
SPIF_SENDWININICHANGE
);

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 14.09.2008 21:35) *

У меня получилось вот так:

Спасибо!! Картинка теперь меняется, только сообщается о ошибке №6...это о чём??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ни о чем... Нет никакой ошибки. Ты должна брать GetLastError только, если тебе сама функция сигнализировала об ошибке (то есть, если вернулся 0):

	if(::SystemParametersInfo(SPI_SETDESKWALLPAPER,	0,
_T("C:\\WINDOWS\\Web\\Wallpaper\\my_pic.bmp"),
SPIF_SENDWININICHANGE) == 0)
{
DWORD dwError = GetLastError();
printf("LastError() = %d \n", dwError);
}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 14.09.2008 22:59) *

Ни о чем... Нет никакой ошибки.

Спасибо большое!! Теперь ясно!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


то же самое для С++ builder
Пользователь может ввести полное имя рисунка, который требуется установить на рабочий стол, в Set_Desk ( компонент Edit).

//SystemParametersInfo(SPI_SETDESKWALLPAPER,0,&filename,SPIF_SENDWININICHANGE);
String filename;
filename=Set_Desk->Text;
//"D:\\WINDOWS\\Lab1.bmp"
if(::SystemParametersInfo(SPI_SETDESKWALLPAPER,0,_T(&filename),SPIF_SENDWININICHANGE) == 0)
{
DWORD dwError = GetLastError();
Control_Panel->Text=IntToStr(dwError);
}
else
Control_Panel->Text= "Change is OK!";




в результате - 2-я ошибка- файл не найден
вводится в Set_Desk путь к файлу в следующей форме: "D:\\WINDOWS\\Lab1.bmp"
что я не так делаю?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.10.2021 8:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name