Параметры принтера в файл ???
GetPrinterDeviceDefaults(&pd);
мы можем получить параметры принтера, но вопрос:
Как сохранить эти параметры в файл, если потребуется динамическая печать на разные принтеры? т.е. один раз настроить программу - установить для разных масок файлов разные принтеры печати, и в дальнейшем, программа считывает параметры принтера из файла, устанавливает его в качастве активного, и сама печатает, т.е. абсолютно независимая печаталка на разные сетевые принтеры.
А я не многого хочу?
И если все таки нужно, то нет ничего сложного в том, чтобы записать PRINTDLG структуру в файл. Или я чего то недопонимаю?
Цитата:
On 2002-09-04 1134, Mozhay wrote
Не совсем понятно, зачем это нужно сохранять.
И если все таки нужно, то нет ничего сложного в том, чтобы записать PRINTDLG структуру в файл. Или я чего то недопонимаю?
Да, вы все правиль поняли, мне именно необходимо сохранить структуру в файл. Я наверно еще не так много знаю... Подскажите, как именно сохранять и как потом возвращать из файла настройки разных принтеров.
#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("printers.dat", 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, &pdlg))
cout << "Can't save printer #0\n";
return 0;
}
Первый параметр ф-ции SavePrinter - номер записи в файле. Возвращает true, если запись прошла успешно.
Чтение из файла делается практически так же, только в ф-ции open указывается не ios::out, а ios::in и вместо sputn используется sgetn.