home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / apps / anypopup.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-08-11  |  4.3 KB  |  140 lines

  1. /*
  2.  *   This program demonstrates the use of the AnyPopup () function.
  3.  *   AnyPopup () determines if a popup window is present on the screen, even
  4.  *   if hidden. AnyPop () is called in response to choosing the "AnyPopup?"
  5.  *   menu option. To create a popup, choose the "Create Popup" menu option.
  6.  *   This function can also be tested by bringing up another application
  7.  *   which creates a popup window.
  8.  */
  9.  
  10. #include "windows.h"
  11. #include "anypopup.h"
  12.  
  13. long    FAR PASCAL HelloWndProc (HWND, unsigned, WORD, LONG);
  14. long    FAR PASCAL PopupProc (HWND, unsigned, WORD, LONG);
  15.  
  16. HWND hPopup = NULL;   /* handle to the popup window */
  17. HANDLE hInst;
  18.  
  19. BOOL HelloInit (hInstance)
  20. HANDLE hInstance;
  21.   {
  22.   PWNDCLASS   pHelloClass;
  23.  
  24.   pHelloClass = (PWNDCLASS)LocalAlloc (LPTR, sizeof (WNDCLASS));
  25.  
  26.   pHelloClass->hCursor        = LoadCursor (NULL, IDC_ARROW);
  27.   pHelloClass->hIcon          = LoadIcon (hInstance, NULL);
  28.   pHelloClass->lpszMenuName      = (LPSTR)"anypopup";
  29.   pHelloClass->lpszClassName     = (LPSTR)"AnyPopup";
  30.   pHelloClass->hbrBackground  = (HBRUSH)GetStockObject (WHITE_BRUSH);
  31.   pHelloClass->hInstance      = hInstance;
  32.   pHelloClass->style          = CS_HREDRAW | CS_VREDRAW;
  33.   pHelloClass->lpfnWndProc    = HelloWndProc;
  34.  
  35.   if (!RegisterClass ( (LPWNDCLASS)pHelloClass))
  36.     return FALSE;
  37.  
  38.   pHelloClass->hCursor        = LoadCursor (NULL, IDC_ARROW);
  39.   pHelloClass->hIcon          = LoadIcon (hInstance, NULL);
  40.   pHelloClass->lpszMenuName   = (LPSTR)NULL;
  41.   pHelloClass->lpszClassName  = (LPSTR)"CHILD A";
  42.   pHelloClass->hbrBackground  = (HBRUSH)GetStockObject (WHITE_BRUSH);
  43.   pHelloClass->hInstance      = hInstance;
  44.   pHelloClass->style          = CS_HREDRAW | CS_VREDRAW;
  45.   pHelloClass->lpfnWndProc     = PopupProc;
  46.  
  47.   if (!RegisterClass ( (LPWNDCLASS)pHelloClass))
  48.     return FALSE;
  49.  
  50.   LocalFree ( (HANDLE)pHelloClass);
  51.   return TRUE;        /* Initialization succeeded */
  52.   }
  53.  
  54. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  55. HANDLE    hInstance, hPrevInstance;
  56. LPSTR     lpszCmdLine;
  57. int       cmdShow;
  58.   {
  59.   MSG   msg;
  60.   HWND  hWnd;
  61.  
  62.   HelloInit (hInstance);
  63.  
  64.   hInst = hInstance;
  65.  
  66.   hWnd = CreateWindow ( (LPSTR)"AnyPopup", "AnyPopup ()",
  67.                       WS_OVERLAPPEDWINDOW,
  68.                       CW_USEDEFAULT, 0,
  69.                       CW_USEDEFAULT, 0,
  70.                       NULL, NULL, hInstance, NULL);
  71.  
  72.   ShowWindow (hWnd, cmdShow);
  73.   UpdateWindow (hWnd);
  74.  
  75.   while (GetMessage ( (LPMSG) & msg, NULL, 0, 0))
  76.     {
  77.     TranslateMessage ( (LPMSG) & msg);
  78.     DispatchMessage ( (LPMSG) & msg);
  79.     }
  80.   return (int)msg.wParam;
  81.   }
  82.  
  83. /* Procedures which make up the window class. */
  84. long    FAR PASCAL HelloWndProc (hWnd, message, wParam, lParam)
  85. HWND      hWnd;
  86. unsigned  message;
  87. WORD      wParam;
  88. LONG      lParam;
  89.   {
  90.   switch (message)
  91.     {
  92.     case WM_COMMAND:
  93.       switch (wParam)
  94.         {
  95.         case IDM_ANYPOPUP:
  96.                 /* are there any  popup windows present in the system ? */
  97.           if (AnyPopup ())  /* if yes, say so */
  98.             MessageBox (NULL, (LPSTR)"there ARE popup windows present",
  99.                        (LPSTR)"AnyPopup () says...", MB_OK);
  100.           else
  101.             MessageBox (NULL, (LPSTR)"there are NOT popup windows present",
  102.                        (LPSTR)"AnyPopup () says...", MB_OK);
  103.           break;
  104.  
  105.         case IDM_CREATEPOPUP:     /*  Create a popup Window  */
  106.           hPopup = CreateWindow ( (LPSTR)"CHILD A",
  107.                                   (LPSTR)"Child A (WS_POPUP)", WS_POPUP |
  108.                                   WS_VISIBLE | WS_CAPTION | WS_CLIPSIBLINGS |
  109.                                   WS_BORDER | WS_SYSMENU, 45, 60, 250, 200,
  110.                                   hWnd, NULL, hInst, NULL);
  111.           break;
  112.         }
  113.       break;
  114.  
  115.     case WM_DESTROY:
  116.       PostQuitMessage (0);
  117.       break;
  118.  
  119.     default:
  120.       return DefWindowProc (hWnd, message, wParam, lParam);
  121.       break;
  122.     }
  123.   return (0L);
  124.   }
  125.  
  126. long    FAR PASCAL PopupProc (hChildAWnd, message, wParam, lParam)
  127. HWND      hChildAWnd;
  128. unsigned  message;
  129. WORD      wParam;
  130. LONG      lParam;
  131.   {
  132.   switch (message)
  133.     {
  134.     default:
  135.       return DefWindowProc (hChildAWnd, message, wParam, lParam);
  136.       break;
  137.     }
  138.   return (0L);
  139.   }
  140.