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

  1. /*
  2.  *
  3.  *   checkdlg.c
  4.  *
  5.  *   This program demonstrates the use of the CheckDlgButton() function.
  6.  *   CheckDlgButton() checks, unchecks, or disables dlg controls (where
  7.  *   applicable). CheckDlgButton() is called from DialogBoxProc() in
  8.  *   this sample application.
  9.  *
  10.  */
  11.  
  12. #include "windows.h"
  13. #include "checkdlg.h"
  14.  
  15. HANDLE hInst;
  16.  
  17. FARPROC lpprocDialog;
  18. long    FAR PASCAL HelloWndProc(HWND, unsigned, WORD, LONG);
  19.  
  20. BOOL FAR PASCAL DialogBoxProc(hDlg, message, wParam, lParam)
  21. HWND      hDlg;
  22. unsigned  message;
  23. WORD      wParam;
  24. LONG      lParam;
  25.   {
  26.   switch (message)
  27.     {
  28.     case WM_INITDIALOG:
  29.       return TRUE;
  30.       break;
  31.  
  32.     case WM_COMMAND:
  33.       switch (wParam)
  34.         {
  35.         case ID_BUTTON1:
  36.           break;
  37.  
  38.         case ID_BUTTON2:
  39.           /* gray button with ID_BUTTON2 id */
  40.           CheckDlgButton(hDlg, ID_BUTTON1, 2);
  41.           break;
  42.  
  43.         case ID_BUTTON3:
  44.           /* uncheck button with ID_BUTTON2 id */
  45.           CheckDlgButton(hDlg, ID_BUTTON1, 0);
  46.           break;
  47.  
  48.         case ID_BUTTON4:
  49.           /* check button with ID_BUTTON2 id */
  50.           CheckDlgButton(hDlg, ID_BUTTON1, 1);
  51.           break;
  52.  
  53.         case ID_OK:
  54.           EndDialog(hDlg, TRUE);
  55.           break;
  56.         }
  57.       break;
  58.  
  59.     default:
  60.       return FALSE;
  61.     }
  62.   }
  63.  
  64. /* Procedure called when the application is loaded for the first time */
  65. BOOL HelloInit(hInstance)
  66. HANDLE hInstance;
  67.   {
  68.   PWNDCLASS   pHelloClass;
  69.  
  70.   pHelloClass = (PWNDCLASS)LocalAlloc(LPTR, sizeof(WNDCLASS));
  71.  
  72.   pHelloClass->hCursor        = LoadCursor(NULL, IDC_ARROW);
  73.   pHelloClass->hIcon          = LoadIcon(hInstance, NULL);
  74.   pHelloClass->lpszMenuName   = (LPSTR)"min";
  75.   pHelloClass->lpszClassName  = (LPSTR)"CheckDlgButton";
  76.   pHelloClass->hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
  77.   pHelloClass->hInstance      = hInstance;
  78.   pHelloClass->style          = CS_HREDRAW | CS_VREDRAW;
  79.   pHelloClass->lpfnWndProc    = HelloWndProc;
  80.  
  81.   if (!RegisterClass((LPWNDCLASS)pHelloClass))
  82.     return FALSE;     /* Initialization failed */
  83.  
  84.   LocalFree((HANDLE)pHelloClass);
  85.   return TRUE;        /* Initialization succeeded */
  86.   }
  87.  
  88.  
  89. int     PASCAL WinMain(hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  90. HANDLE hInstance, hPrevInstance;
  91. LPSTR lpszCmdLine;
  92. int    cmdShow;
  93.   {
  94.   MSG   msg;
  95.   HWND  hWnd;
  96.  
  97.   HelloInit(hInstance);
  98.   hWnd = CreateWindow((LPSTR)"CheckDlgButton",
  99.                       (LPSTR)"CheckDlgButton()",
  100.                       WS_OVERLAPPEDWINDOW,
  101.                       CW_USEDEFAULT,
  102.                       CW_USEDEFAULT,
  103.                       CW_USEDEFAULT,
  104.                       CW_USEDEFAULT,
  105.                       (HWND)NULL,        /* no parent */
  106.                       (HMENU)NULL,       /* use class menu */
  107.                       (HANDLE)hInstance, /* handle to window instance */
  108.                       (LPSTR)NULL);      /* no params to pass on */
  109.   hInst = hInstance;
  110.  
  111.   ShowWindow(hWnd, cmdShow);
  112.   UpdateWindow(hWnd);
  113.  
  114.   while (GetMessage((LPMSG) & msg, NULL, 0, 0))
  115.     {
  116.     TranslateMessage((LPMSG) & msg);
  117.     DispatchMessage((LPMSG) & msg);
  118.     }
  119.   return (int)msg.wParam;
  120.   }
  121.  
  122.  
  123. /* Procedures which make up the window class. */
  124. long    FAR PASCAL HelloWndProc(hWnd, message, wParam, lParam)
  125. HWND     hWnd;
  126. unsigned message;
  127. WORD     wParam;
  128. LONG     lParam;
  129.   {
  130.   switch (message)
  131.     {
  132.     case WM_COMMAND:
  133.       lpprocDialog = MakeProcInstance((FARPROC)DialogBoxProc, hInst);
  134.       DialogBox(hInst, MAKEINTRESOURCE(2), hWnd, lpprocDialog);
  135.       FreeProcInstance((FARPROC)lpprocDialog);
  136.       break;
  137.  
  138.     case WM_DESTROY:
  139.       PostQuitMessage(0);
  140.       break;
  141.  
  142.     default:
  143.       return DefWindowProc(hWnd, message, wParam, lParam);
  144.       break;
  145.     }
  146.   return(0L);
  147.   }
  148.