本文整理汇总了C++中TRect::BottomRight方法的典型用法代码示例。如果您正苦于以下问题:C++ TRect::BottomRight方法的具体用法?C++ TRect::BottomRight怎么用?C++ TRect::BottomRight使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TRect
的用法示例。
在下文中一共展示了TRect::BottomRight方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//
/// Layout button and text in the control area.
//
void
TButtonTextGadget::Layout(TRect& faceRect, TRect& textRect, TRect& btnRect)
{
if(Style == sBitmap)
btnRect = faceRect;
else if(Style == sText)
textRect = faceRect;
else{
TSize textSize;
if(Style&sText)
GetTextSize(textSize);
TSize btnSize;
if(Style&sBitmap)
TButtonGadget::GetDesiredSize(btnSize);
switch(LayoutStyle){
case lTextLeft:
if(Style&sText)
textRect = TRect(faceRect.TopLeft(), TSize(textSize.cx,faceRect.Height()));
if(Style&sBitmap)
btnRect = TRect(TPoint(faceRect.left+textSize.cx+TextSpaceV,faceRect.top),
faceRect.BottomRight());
break;
case lTextRight:
if(Style&sBitmap)
btnRect = TRect(faceRect.left, faceRect.top,
faceRect.left+btnSize.cx, faceRect.bottom);
if(Style&sText)
textRect = TRect(btnRect.right+TextSpaceV,faceRect.top,
faceRect.right, faceRect.bottom);
break;
case lTextTop:
if(Style&sText)
textRect = TRect(faceRect.TopLeft(), TSize(faceRect.Width(),textSize.cy));
if(Style&sBitmap)
btnRect = TRect(TPoint(faceRect.left,faceRect.top+textSize.cy+TextSpaceH),
TSize(faceRect.Width(), faceRect.Height()-textSize.cy));
break;
case lTextBottom:
if(Style&sText)
textRect = TRect(faceRect.left,faceRect.bottom-textSize.cy,
faceRect.right,faceRect.bottom);
if(Style&sBitmap)
btnRect = TRect(faceRect.TopLeft(),
TSize(faceRect.Width(), faceRect.Height()-textSize.cy));
break;
}
}
}
示例2: if
/// Move and resize the window so that the window is the same size as the hyperlink
/// text. This stops the hyperlink cursor being active when it is not directly over
/// the text. If the text is left justified then the window is merely shrunk, but if
/// it is centred or right justified then the window will have to be moved as well.
//
// Suggested by Pål K. Tønder
void
TUrlLink::PositionWindow()
{
// Get the current window position
TRect rect;
GetWindowRect(rect);
TWindow* pParent = GetParentO();
if(pParent){
pParent->ScreenToClient(rect.TopLeft());
pParent->ScreenToClient(rect.BottomRight());
}
// Get the size of the window text
TTmpBuffer<tchar> buffer(MAX_PATH);
GetText(buffer, MAX_PATH);
TSize size = LinkFont->GetTextExtent(&buffer[0]);
// Get the text justification via the window style
uint32 style = GetStyle(); //TWindow
// Recalc the window size and position based on the text justification
if (style & SS_CENTERIMAGE)
rect.Inflate(0, -(rect.Height() - size.cy)/2);
else
rect.bottom = rect.top + size.cy;
if (style & SS_CENTER)
rect.Inflate( -(rect.Width() - size.cx)/2, 0);
else if (style & SS_RIGHT)
rect.left = rect.right - size.cx;
else // SS_LEFT = 0, so we can't test for it explicitly
rect.right = rect.left + size.cx;
// Move the window
SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER);
}
示例3: Paint
void TFuncSpecView::Paint(TDC& dc, bool erase, TRect& rect)
{
TSwitchMinApp* theApp = TYPESAFE_DOWNCAST(GetApplication(), TSwitchMinApp);
if (theApp) {
// Only paint if we're printing and we have something to paint, otherwise do nothing.
//
if (theApp->Printing && theApp->Printer && !rect.IsEmpty()) {
// Use pageSize to get the size of the window to render into. For a Window it's the client area,
// for a printer it's the printer DC dimensions and for print preview it's the layout window.
//
TSize pageSize(rect.right - rect.left, rect.bottom - rect.top);
TPrintDialog::TData& printerData = theApp->Printer->GetSetup();
// Get area we can draw in
TRect drawingArea(swdoc->PaintHeader(dc, rect, "", 0, 0, false), rect.BottomRight());
TEXTMETRIC tm;
dc.SelectObject(TFont("Arial", -12));
if (!dc.GetTextMetrics(tm)) {
dc.SelectObject(TFont("Arial", -12));
dc.GetTextMetrics(tm);
}
int fHeight=tm.tmHeight+tm.tmExternalLeading;
unsigned long inputs=swdoc->GetSystem()->GetInputs();
XPosVector xpos;
uint divider;
char* data;
Print_CreateWidths(xpos, divider, dc);
if (xpos.back().x < rect.Size().cx) { // put space in structure to stretch across page
uint spacing=(rect.Size().cx - xpos.back().x)/(xpos.size()+1);
uint space_inc=spacing;
for(XPosVector::size_type i=0; i<xpos.size(); i++) {
if (i==inputs) { // after inputs section, increase divider
divider += space_inc;
space_inc += spacing;
}
xpos[i].x += space_inc;
space_inc += spacing;
}
}
data=new char[xpos.size()];
unsigned long PagesDown=1+pow(2,inputs)/( (drawingArea.Size().cy/fHeight) - 2); // 2 lines for header and horz divider
unsigned long PagesAcross=1+xpos.back().x/drawingArea.Size().cx;
unsigned long Pages=1+PagesDown*PagesAcross;
// Compute the number of pages to print.
//
printerData.MinPage = 1;
printerData.MaxPage = Pages;
int fromPage = printerData.FromPage == -1 ? 1 : printerData.FromPage;
int toPage = printerData.ToPage == -1 ? 1 : printerData.ToPage;
int currentPage = fromPage;
TPoint p;
dc.SelectObject(TPen(TColor::Black));
while (currentPage <= toPage) {
swdoc->PaintHeader(dc, rect, "Specification", currentPage, Pages, true);
if (currentPage==1) Print_Summary(dc, drawingArea);
else {
// Calculate origin of line by page number
// x
int col=((currentPage-2) ) % PagesAcross;
p.x=drawingArea.left - col * drawingArea.Size().cx;
// y
int row=floor((currentPage-2)/PagesAcross);
p.y=drawingArea.top/* - row * drawingArea.Size().cy*/;
// Calculate starting and ending input states
CELL_TYPE state, stateEnd;
state=(row*(drawingArea.Size().cy-fHeight))/fHeight;
stateEnd=state+(drawingArea.Size().cy-fHeight)/fHeight;
if (stateEnd >= (pow(2,inputs)-1) ) stateEnd=pow(2,inputs)-1;
//
// Draw header and lines
// Vertical
if ( ((p.x+divider) > drawingArea.left) && ((p.x+divider)<drawingArea.right) ) {
dc.MoveTo(p.x+divider, p.y);
dc.LineTo(p.x+divider, p.y+((stateEnd-state)+3)*fHeight);
}
// Labels
for(XPosVector::size_type i=0; i<xpos.size(); i++)
dc.TextOut(TPoint(xpos[i].x, p.y), xpos[i].s.c_str());
p.y += fHeight;
// Horizontal
dc.MoveTo(drawingArea.left, p.y + fHeight/2);
dc.LineTo(p.x+xpos.back().x, p.y + fHeight/2);
//.........这里部分代码省略.........