Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Параметры принтера в файл ???

Аноним
При вызове функции
GetPrinterDeviceDefaults(&pd);
мы можем получить параметры принтера, но вопрос:
Как сохранить эти параметры в файл, если потребуется динамическая печать на разные принтеры? т.е. один раз настроить программу - установить для разных масок файлов разные принтеры печати, и в дальнейшем, программа считывает параметры принтера из файла, устанавливает его в качастве активного, и сама печатает, т.е. абсолютно независимая печаталка на разные сетевые принтеры.

А я не многого хочу?
577
04 сентября 2002 года
Mozhay
81 / / 20.09.2000
Не совсем понятно, зачем это нужно сохранять.
И если все таки нужно, то нет ничего сложного в том, чтобы записать PRINTDLG структуру в файл. Или я чего то недопонимаю?
Аноним
Цитата:

On 2002-09-04 1134, Mozhay wrote
Не совсем понятно, зачем это нужно сохранять.
И если все таки нужно, то нет ничего сложного в том, чтобы записать PRINTDLG структуру в файл. Или я чего то недопонимаю?



Да, вы все правиль поняли, мне именно необходимо сохранить структуру в файл. Я наверно еще не так много знаю... Подскажите, как именно сохранять и как потом возвращать из файла настройки разных принтеров.

577
05 сентября 2002 года
Mozhay
81 / / 20.09.2000
Можно так:

#include <windows.h>
#include <fstream>
#include <iostream>

using std::filebuf;
using std::ios;
using std::streampos;
using std::cout

bool SavePrinter(int n, PRINTDLG *dlg)
{
filebuf f;
if (!f.open(&quot;printers.dat&quot;, ios::out | ios::binary))
return false;
streampos pos = n * sizeof(PRINTDLG);
if (f.pubseekpos(pos, ios::out) != pos)
return false;
return (f.sputn(reinterpret_cast<char*>(pdlg), sizeof(PRINTDLG)) == sizeof(PRINTDLG));
}

int main()
{
PRINTDLG pdlg;
// fill pdlg with real data
if (!SavePrinter(0, &amp;pdlg))
cout << &quot;Can't save printer #0\n&quot;;
return 0;
}

Первый параметр ф-ции SavePrinter - номер записи в файле. Возвращает true, если запись прошла успешно.
Чтение из файла делается практически так же, только в ф-ции open указывается не ios::out, а ios::in и вместо sputn используется sgetn.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог