Печать окна Web Navigator
Юрий Оганесян; 2.10.03

Добрый день!

Удалось ли кому-нибудь распечатать из IE страницу с мнемосхемой, отображаемой Web Navigator Client'ом?

Re: Печать окна Web Navigator
Лев Шерешевский; 2.10.03

Да, удалось.

Re: Печать окна Web Navigator
Юрий Оганесян; 3.10.03

Хм... а в чем тогда подвох?

У меня IE 6.0 SP1, WebNavogator Client 1.0 и печать (как и предварительный просмотр) странички c WebNavigator демонстрирует чистый лист с педантично напечатанными колонтитулами.
Попробовали на 5 различных компьютерах - везде также.
А у Вас печать сама собой получилась, или какое-то волшебное слово говорили?
Re: Печать окна Web Navigator
Роман Папировский; 3.10.03

Печать содержимого экрана делали непосредственно из WinCC.

Для этого на форме размещали кнопку и на Event по нажатию вешали скрипт

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("prtscrn.dll")
BOOL WINAPI PrtScreenPart ( ULONG left, ULONG top, ULONG width, ULONG height);
#pragma code()

HWND Handle;
BOOL WinMax;
RECT rect, rectW;
float ScaleX,ScaleY,Scale;
int X,Y,Width,Height,BordX,BordY;
char ParentPicture[256], PictureObject[256], *pos1, *pos2, PicName[256];
int Lenght,i,CountTrend;
DWORD arrColor[12];

if ( MessageBox(
Handle,
"Вы действительно желаете распечатать копию содержимого экрана?",
"Подтверждение",
MB_OKCANCEL | MB_ICONEXCLAMATION | MB_SETFOREGROUND|MB_SYSTEMMODAL
)
== 2 ) return;



#ifdef RUN_ON_WEBNAVIGATOR
Handle = FindWindow(NULL, "WinCC Web Navigator - Microsoft Internet Explorer");
#else
Handle = FindWindow("PDLRTisAliveAndWaitsForYou",NULL);
#endif
if (Handle==NULL)
{
Beep(440,500);
return;
}

//Max Screen
WinMax = IsZoomed(Handle);
if (!WinMax)
{
PostMessage(Handle , WM_SYSCOMMAND,0xf030,0); //Max
}
///////////////////////////

GetWindowRect(Handle , &rectW);
printf("rectW.left= %d\r\n",rectW.left);
printf("rectW.top= %d\r\n",rectW.top);
printf("rectW.bottom = %d\r\n",rectW.bottom);
printf("rectW.right = %d\r\n",rectW.right);
GetClientRect(Handle , &rect);
printf("rect.left= %d\r\n",rect.left);
printf("rect.top= %d\r\n",rect.top);
printf("rect.bottom = %d\r\n",rect.bottom);
printf("rect.right = %d\r\n",rect.right);

ScaleX = (float)1280/(float)(rect.right-rect.left);
#ifdef RUN_ON_WEBNAVIGATOR
ScaleY = (float)800/(float)(rect.bottom-rect.top);
#else
ScaleY = (float)1024/(float)(rect.bottom-rect.top);
#endif
if (ScaleY<ScaleX)
{
Scale=ScaleX;
}
else
{
Scale=ScaleY;
}
BordX = ((rectW.right-rectW.left)-(rect.right-rect.left )) /2;
BordY = ((rectW.bottom-rectW.top)-(rect.bottom-rect.top))-BordX;
printf("BordX = %d\r\n",BordX);
printf("BordY = %d\r\n",BordY);


X=rectW.left+rect.left+BordX;
Y=BordY+rectW.top+rect.top;
Width=1280/Scale;
Height=1024/Scale;

PrtScreenPart (X, Y, Width, Height);
if (!WinMax)
{
PostMessage(Handle , WM_SYSCOMMAND,0xF120,0); //Normal
}
}