Wasabi |
Отправлено: 21.09.2004, 18:44 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Народ как понять что было нажато в ПринтДиалоге, Ок или Cansel?
Я так понимаю надо юзать WinAPI? Честна скажу — шарю в нем слабо. Не могу допетрить как получить сообщение от этого окна, чтобы понять результат
Поможите?
Сенькс. |
|
Doga |
Отправлено: 21.09.2004, 19:05 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
TPrintDialog::Execute
virtual bool __fastcall Execute(void);
Description
Execute opens the Print dialog, returning true when the user clicks Print and false when the user clicks Cancel.
|
|
creater |
Отправлено: 21.09.2004, 19:24 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (Wasabi @ 21/09/2004, 19:46) | Народ как понять что было нажато в ПринтДиалоге, Ок или Cansel?
Я так понимаю надо юзать WinAPI? Честна скажу — шарю в нем слабо. Не могу допетрить как получить сообщение от этого окна, чтобы понять результат
Поможите?
Сенькс. |
Пример из фака...
CODE |
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Close(); //Закрываем форму
ModalResult=mrOk; //Результат закрытия — mrOk
}
...
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Close(); //Закрываем форму
ModalResult=mrCancel; //Результат закрытия — mrCancel
}
Код достаточно понятен — метод Close() закрывает окно, и в свойство ModalResult второй формы мы раписываем значение, соответствующее нажатой пользователем кнопки. Осталось переделать код для показа второй формы. Измените его следующим образом:
...
if (Form2->ShowModal()==mrOk) //Если нажата кнопка OK
Form1->Caption=Form2->Edit1->Text; //то меняем заголовок у формы
...
| |
|
Wasabi |
Отправлено: 21.09.2004, 20:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Вы меня не поняли, я не юзаю TPrintDialog!
Я юзаю компонент, для работы с изображениями, там криво реализован метод вызывающий диалог принтера(системное окно), после клавиши Cansel все равно идет печать. Так вот просто я хочу перехватить нажатие отмены и сделать выход. |
|
xim |
Отправлено: 22.09.2004, 09:19 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Если под системным окошком подразумевается результат вызова
BOOL PrintDlg (LPPRINTDLG) (из comdlg32.dll), то результат его вызова:
OK — TRUE
CanCel — FALSE
|
|
Guest |
Отправлено: 22.09.2004, 11:41 |
|
Не зарегистрирован
|
QUOTE (xim @ 22/09/2004, 10:21) | Если под системным окошком подразумевается результат вызова
BOOL PrintDlg (LPPRINTDLG) (из comdlg32.dll), то результат его вызова:
OK — TRUE
CanCel — FALSE |
когда пишу
if(PrintDlg()==false)
получаю ругань от компилятора
|
|
xim |
Отправлено: 22.09.2004, 13:39 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
У PrintDlg есть параметр. Примерно должно быть так:
PRINTDLG pdParams;
ZeroMemory(&pdParams,sizeof(PRINTDLG));
pdParams.lStructSize=sizeof(PRINTDLG);
... <настраиваются параметры диалога (для теста можно не выполнять)>
if(PrintDlg(&pdParams)==true)
{
// печать
}else
{
// тот самый false — вываливаемся из области видимости печати
} |
|
Wasabi |
Отправлено: 23.09.2004, 08:41 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
QUOTE (xim @ 22/09/2004, 14:41) | У PrintDlg есть параметр. Примерно должно быть так:
PRINTDLG pdParams;
ZeroMemory(&pdParams,sizeof(PRINTDLG));
pdParams.lStructSize=sizeof(PRINTDLG);
... <настраиваются параметры диалога (для теста можно не выполнять)>
if(PrintDlg(&pdParams)==true)
{
// печать
}else
{
// тот самый false — вываливаемся из области видимости печати
} |
не катит это.
Народ подскажите просто как зная хэндл окна (в данном случае окно диалога принтера), получить от окна результат ?
Спасиб. |
|