I would like to get the height and width of a page so that I could use it in the Report Helper. I found on the previous post on GetPageSize. But the coding was in Delphi.
Code: Select all
var w, h: Integer;
// rvoClientTextWidth must be excluded from RichViewEdit1.Options.
GetPageSize(RVPrint1, w,h);
RichViewEdit1.MaxTextWidth :=
w-RichViewEdit1.LeftMargin-RichViewEdit1.RightMargin;
RichViewEdit1.Format;
procedure GetPageSize(RVPrint: TRVPrint;
var Width, Height: Integer);
var DC: HDC;
phoX, phoY, phW, phH, lpy, lpx, LM, TM, RM, BM: Integer;
begin
DC := RV_GetPrinterDC; // from PtblRV unit
Width := GetDeviceCaps(DC, HORZRES);
Height := GetDeviceCaps(DC, VERTRES);
lpy := GetDeviceCaps(DC, LOGPIXELSY);
lpx := GetDeviceCaps(DC, LOGPIXELSX);
phoX := GetDeviceCaps(DC, PHYSICALOFFSETX);
phoY := GetDeviceCaps(DC, PHYSICALOFFSETY);
phW := GetDeviceCaps(DC, PHYSICALWIDTH);
phH := GetDeviceCaps(DC, PHYSICALHEIGHT);
LM := MulDiv(RVPrint.LeftMarginMM, 5*lpx, 127)- phoX;
TM := MulDiv(RVPrint.TopMarginMM, 5*lpy, 127)- phoY;
RM := MulDiv(RVPrint.RightMarginMM, 5*lpx, 127)- (phW-(phoX+Width));
BM := MulDiv(RVPrint.BottomMarginMM, 5*lpy, 127)- (phH-(phoY+Height));
if LM<0 then LM := 0;
if TM<0 then TM := 0;
if RM<0 then RM := 0;
if BM<0 then BM := 0;
dec(Width, LM+RM);
dec(Height, TM+BM);
DeleteDC(DC);
DC := GetDC(0);
Width := MulDiv(Width, GetDeviceCaps(DC, LOGPIXELSX), lpx);
Height := MulDiv(Height, GetDeviceCaps(DC, LOGPIXELSY), lpy);
ReleaseDC(0, DC);
end;
Could I know how to do the GetPageSize in C++ Builder? Because im having problem trying to figure out how the codes in C++ goes.
Thanks!