home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / window / getwnext.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  5KB  |  125 lines

  1. /*
  2.  * GetWindowExt()
  3.  *
  4.  * This program registers a window and creates it on the screen.  The
  5.  *  program then creates the window, shows the window, and then updates
  6.  *  the window.  The WinMain proceeds to execute the GetWindowExt function.
  7.  *  Two message boxes are created which display the coordinates of the
  8.  *  window extentions.
  9.  */
  10.  
  11. #include "windows.h"
  12.  
  13. /* Global Variables */
  14. static HANDLE hInst;
  15. static HWND hWnd;
  16.  
  17. /* FORWARD REFERENCES */
  18. long FAR PASCAL WindowProc (HWND, unsigned, WORD, LONG);
  19.  
  20. /* WINMAIN */
  21. int PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  22. HANDLE hInstance, hPrevInstance;
  23. LPSTR lpszCmdLine;
  24. int cmdShow;
  25. {
  26.   MSG   msg;
  27.   HDC   hDC;             /* Handle to the Display Context.  */
  28.   WORD  xExt;            /* X extent.                       */
  29.   WORD  yExt;            /* Y extent.                       */
  30.   DWORD dwExtent;        /* Long pointer to the extent.     */
  31.   char szbuf[50];        /* Output buffer, zero terminated. */
  32.  
  33.   if (!hPrevInstance)  {
  34.  
  35.      WNDCLASS rClass;
  36.  
  37.      rClass.lpszClassName = (LPSTR)"getwnext"; /* Unique class name. */
  38.      rClass.hInstance      = hInstance;
  39.      rClass.lpfnWndProc   = DefWindowProc;
  40.      rClass.hCursor         = LoadCursor(NULL, IDC_ARROW);
  41.      rClass.hIcon            = LoadIcon(hInstance, IDI_APPLICATION);
  42.      rClass.lpszMenuName  = (LPSTR)NULL;
  43.      rClass.hbrBackground = GetStockObject(WHITE_BRUSH);
  44.      rClass.style            = CS_HREDRAW | CS_VREDRAW;
  45.      rClass.cbClsExtra      = 0;
  46.      rClass.cbWndExtra      = 0;
  47.  
  48.      RegisterClass((LPWNDCLASS)&rClass);
  49.  
  50.      }
  51.  
  52.    hInst = hInstance;
  53.  
  54.    hWnd = CreateWindow((LPSTR) "getwnext", /* Create the Window.        */
  55.                (LPSTR) "GetWindowExt",       /* Title: GetWindowExt.      */
  56.                WS_OVERLAPPEDWINDOW,          /* Set to overlapped window. */
  57.                CW_USEDEFAULT,                /* Use default coordinates.  */
  58.                CW_USEDEFAULT,                /* Use default coordinates.  */
  59.                CW_USEDEFAULT,                /* Use default coordinates.  */
  60.                CW_USEDEFAULT,                /* Use default coordinates.  */
  61.                (HWND)NULL,
  62.                (HMENU)NULL,
  63.                (HANDLE)hInstance,
  64.                (LPSTR)NULL
  65.              );
  66.  
  67.    ShowWindow(hWnd, cmdShow);
  68.    UpdateWindow(hWnd);
  69.  
  70.    hDC = GetDC(hWnd);               /* Get the handle to the DC. */
  71.    dwExtent = GetWindowExt(hDC);    /* Get the window extents.   */
  72.  
  73.    xExt = LOWORD(dwExtent);         /* Isolate the X extent.     */
  74.    yExt = HIWORD(dwExtent);         /* Isolate the Y extent.     */
  75.  
  76.    sprintf(szbuf,                   /* Place X extent, with      */
  77.            "%s%hu",                 /*  message, into the output */
  78.            "The Original x Extent is ",  /*  buffer for display  */
  79.            xExt);                   /* in a message box.         */
  80.    MessageBox(GetFocus(),           /* Output the X extent in a  */
  81.               (LPSTR)szbuf,         /*  message box.             */
  82.               (LPSTR)"GetWindowExt() - MM_TEXT",
  83.               MB_OK);
  84.  
  85.    sprintf(szbuf,                   /* Place Y extent, with      */
  86.            "%s%hu",                 /*  message, into the output */
  87.            "The Original y Extent is ", /*  buffer for display   */
  88.            yExt);                   /* in a message box.         */
  89.    MessageBox(GetFocus(),           /* Output the Y extent in a  */
  90.               (LPSTR)szbuf,         /*  message box.             */
  91.               (LPSTR)"GetWindowExt() - MM_TEXT",
  92.               MB_OK);
  93.  
  94.    MessageBox(GetFocus(), (LPSTR)"Settting Extents to (2,4)",
  95.               (LPSTR)"SetWindowExt() - MM_ISOTROPIC", MB_OK);
  96.    SetMapMode(hDC, MM_ISOTROPIC);   /* Need this or SetWindowExt */
  97.    SetWindowExt(hDC, 2, 4);         /* will be ignored.          */
  98.  
  99.    dwExtent = GetWindowExt(hDC);    /* Get the window extents.   */
  100.  
  101.    xExt = LOWORD(dwExtent);         /* Isolate the X extent.     */
  102.    yExt = HIWORD(dwExtent);         /* Isolate the Y extent.     */
  103.  
  104.    sprintf(szbuf,                   /* Place X extent, with      */
  105.            "%s%hu",                 /*  message, into the output */
  106.            "The New x Extent is ",  /*  buffer for display       */
  107.            xExt);                   /* in a message box.         */
  108.    MessageBox(GetFocus(),           /* Output the X extent in a  */
  109.               (LPSTR)szbuf,         /*  message box.             */
  110.               (LPSTR)"GetWindowExt() - MM_ISOTROPIC",
  111.               MB_OK);
  112.  
  113.    sprintf(szbuf,                   /* Place Y extent, with      */
  114.            "%s%hu",                 /*  message, into the output */
  115.            "The New y Extent is ",  /*  buffer for display       */
  116.            yExt);                   /* in a message box.         */
  117.    MessageBox(GetFocus(),           /* Output the Y extent in a  */
  118.               (LPSTR)szbuf,         /*  message box.             */
  119.               (LPSTR)"GetWindowExt() - MM_ISOTROPIC",
  120.               MB_OK);
  121.  
  122.    ReleaseDC(hWnd, hDC);            /* Release the DC.           */
  123.  
  124. } /* WinMain */
  125.