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

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