Understanding GDI mapping modes and other functions


This tool was contributed by Hans Wedemeyer.

MapMode.exe is an interactive tool that can help a programmer better understand various graphics functions and their interactions.

It demonstrates the interactions of

SetMapMode()    // all eight modes
SetWindowExt ()
SetViewportExt ()
SetViewportOrg ()
BitBlt( )

Have you ever wondered what a printed page will look like in a particular map mode, here's thre answer and you don't have to write code to find out !

Ever wondered what all those arguments to BitBlt() do ! now you can find out!

Open eight windows and compare all eight map modes at the same time !

When you run the program, there appears a "control panel", on it are various buttons to adjust the parameters for each function. as you adjust the screen is repainted and the change takes place immediately.

Consider these to be in the program's OnDraw()

void MapMode::OnDraw(CDC* pDC )
    CRect rect;

    if ( pDC->IsPrinting())
        rect.left = 0;
        rect.top = 0;
        rect.right = pDC->GetDeviceCaps(HORZRES);
        rect.bottom = pDC->GetDeviceCaps(VERTRES);

    pDC->SetMapMode ( m_nMapMode );

    pDC->SetWindowExt ( X, Y )

    pDC->SetViewportExt ( X , Y );

    pDC->SetViewportOrg ( X, Y );

    bmp.CreateCompatibleBitmap( pDC, X, Y );

   pDC->BitBlt( X1, Y1, X2, Y2, pBmpDC, X3, Y3, SRCCOPY );

You may draw a line to better understand or locate various x,y coordinates.

Additions made since the original tool.

Annotated origins for easy indentifaction.

Another new feature is "Find Origin" which help pin point in which direction the origin could be, useful if you loose the origin off screen.

Download file


  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The software-defined WAN (SD-WAN) has emerged as the solution for enterprises embracing cloud computing as a means to realizing digital transformation. In this IDC brief, learn why the need for SD-WAN will be even greater than the need for SDN in the data center, especially when an organization's application profile is migrating toward public cloud services and where customer engagement is most valued.

  • Why use NoSQL? Innovative companies like AT&T, GE, and PayPal have successfully transitioned from relational to NoSQL for their critical web, mobile, and IoT applications. By understanding where to introduce NoSQL, how to model and access the data, and how to manage and monitor a distributed database, you can do the same. This white paper explains the need for non-relational databases, describes advantages of NoSQL, and clarifies the important difference between SQL and NoSQL databases. We walk you …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date