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

  1. /*
  2.  *   IsWindow
  3.  *
  4.  *   This program demonstrates the use of the IsWindow function. The IsWindow
  5.  *   function checks to see if the given handle is indeed a handle to a valid
  6.  *   window.
  7.  */
  8.  
  9. #include "windows.h"
  10.  
  11. long    FAR PASCAL HelloWndProc(HWND, unsigned, WORD, LONG);
  12.  
  13. /* Procedure called when the application is loaded for the first time */
  14. BOOL HelloInit( hInstance )
  15. HANDLE hInstance;
  16. {
  17.   PWNDCLASS   pHelloClass;
  18.  
  19.   pHelloClass = (PWNDCLASS)LocalAlloc( LPTR, sizeof(WNDCLASS) );
  20.  
  21.   pHelloClass->hCursor        = LoadCursor( NULL, IDC_ARROW );
  22.   pHelloClass->hIcon         = LoadIcon( hInstance, NULL);
  23.   pHelloClass->lpszMenuName   = (LPSTR)NULL;
  24.   pHelloClass->lpszClassName     = (LPSTR)"Sample Application";
  25.   pHelloClass->hbrBackground  = (HBRUSH)GetStockObject( WHITE_BRUSH );
  26.   pHelloClass->hInstance      = hInstance;
  27.   pHelloClass->style          = CS_HREDRAW | CS_VREDRAW;
  28.   pHelloClass->lpfnWndProc    = HelloWndProc;
  29.  
  30.   if (!RegisterClass( (LPWNDCLASS)pHelloClass ) )
  31. /* Initialization failed.
  32.          * Windows will automatically deallocate all allocated memory.
  33.          */
  34.     return FALSE;
  35.  
  36.   LocalFree( (HANDLE)pHelloClass );
  37.   return TRUE;        /* Initialization succeeded */
  38. }
  39.  
  40.  
  41. int    PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  42. HANDLE hInstance, hPrevInstance;
  43. LPSTR lpszCmdLine;
  44. int    cmdShow;
  45. {
  46.   MSG   msg;
  47.   HWND  hWnd;       /** VALID HANDLE TO VALID WINDOW    **/
  48.   HWND invalWnd;     /** INVALID HANDLE TO PHONY WINDOW **/
  49.   HMENU hMenu;
  50.   BOOL isvalid;     /** BOOLEAN TO HOLD RETURN VALUE FROM IsWindow **/
  51.  
  52. /** INVALID ASSIGNMENT TO A HANDLE TO A WINDOW **/
  53.   invalWnd = 44;
  54.  
  55.   HelloInit( hInstance );
  56.  
  57. /** VALID ASSIGNMENT TO A HANDLE TO A WINDOW   **/
  58.   hWnd = CreateWindow((LPSTR)"Sample Application", (LPSTR)"Sample Application",
  59.       WS_OVERLAPPEDWINDOW,
  60.       CW_USEDEFAULT, 0,
  61.       CW_USEDEFAULT, 0,
  62.       NULL,     NULL, hInstance, NULL);
  63.  
  64. /* Make window visible according to the way the app is activated */
  65.   ShowWindow( hWnd, cmdShow );
  66.   UpdateWindow( hWnd );
  67.   MessageBox(GetFocus(), (LPSTR)"Checking if this window valid", (LPSTR)" ",
  68.       MB_OK);
  69.  
  70. /** is hWnd a valid handle to a window? **/
  71.   isvalid = IsWindow(hWnd);
  72.  
  73. /** if yes  **/
  74.   if (isvalid)
  75. /** say so **/
  76.     MessageBox(GetFocus(), (LPSTR)"this window is valid", (LPSTR)"WINDOW INFO",
  77.         MB_OK);
  78.   else /** if not valid, say so **/
  79.     MessageBox(GetFocus(), (LPSTR)"this window is NOT valid", (LPSTR)"WINDOW INFO",
  80.         MB_OK);
  81.  
  82.   MessageBox(GetFocus(), (LPSTR)"Checking if phoney window valid", (LPSTR)" ",
  83.       MB_OK);
  84.  
  85. /** is invalWnd a valid handle to a window? **/
  86.   isvalid = IsWindow(invalWnd);
  87. /** if yes, say so **/
  88.   if (isvalid)
  89.     MessageBox(GetFocus(), (LPSTR)"the phony window is valid", (LPSTR)"WINDOW INFO",
  90.         MB_OK);
  91.   else /** if not valid, say so **/
  92.     MessageBox(GetFocus(), (LPSTR)"the phony window is NOT valid", (LPSTR)"WINDOW INFO",
  93.         MB_OK);
  94.  
  95. /* Polling messages from event queue */
  96.   while (GetMessage((LPMSG) & msg, NULL, 0, 0))
  97.   {
  98.     TranslateMessage((LPMSG) & msg);
  99.     DispatchMessage((LPMSG) & msg);
  100.   }
  101.  
  102.   return (int)msg.wParam;
  103. }
  104.  
  105.  
  106. /* Procedures which make up the window class. */
  107. long    FAR PASCAL HelloWndProc( hWnd, message, wParam, lParam )
  108. HWND hWnd;
  109. unsigned    message;
  110. WORD wParam;
  111. LONG lParam;
  112. {
  113.   PAINTSTRUCT ps;
  114.  
  115.   switch (message)
  116.   {
  117.   case WM_DESTROY:
  118.     PostQuitMessage( 0 );
  119.     break;
  120.  
  121.   default:
  122.     return DefWindowProc( hWnd, message, wParam, lParam );
  123.     break;
  124.   }
  125.   return(0L);
  126. }
  127.  
  128.  
  129.