home *** CD-ROM | disk | FTP | other *** search
/ CICA 1995 May / cica_0595_4.zip / cica_0595_4 / UTIL / MSWSRC35 / METER / METERDLG.C < prev   
C/C++ Source or Header  |  1992-06-11  |  2KB  |  90 lines

  1. /*****************************************************************
  2. Module name: MeterDlg.C
  3. Programmer : Jeffrey M. Richter.
  4. *****************************************************************/
  5.  
  6. #include <windows.h>
  7. #include <custcntl.h>
  8.  
  9. #include "cntl-de.h"
  10.  
  11. #include "meter.h"
  12.  
  13. extern const HINSTANCE _cdecl _hInstance;
  14.  
  15. extern char _szControlName[];
  16.  
  17. BOOL CALLBACK MeterDlgFn
  18.          (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  19.  
  20.  
  21. HGLOBAL WINAPI MeterInfo (void) {
  22.    HGLOBAL hGlblCtlInfo = (HGLOBAL) NULL;
  23.  
  24.    hGlblCtlInfo =
  25.       ControlInfo(0x0100, _szControlName, _szControlName);
  26.    if (hGlblCtlInfo == NULL) return(hGlblCtlInfo);
  27.    AddControlType(hGlblCtlInfo, 0, 40, 12,
  28.       WS_BORDER | WS_CHILD, _szControlName);
  29.    return(hGlblCtlInfo);
  30.  
  31. }
  32.  
  33. BOOL WINAPI MeterStyle (HWND hWnd, HGLOBAL hGlblCtlStyle,
  34.          LPFNSTRTOID lpfnStrToId, LPFNIDTOSTR lpfnIdToStr) {
  35.    return(ShowStyleDlg(_hInstance, MAKEINTRESOURCE(DLG_STYLEDLG),
  36.       hWnd, (DLGPROC) MeterDlgFn, 0, hGlblCtlStyle,
  37.       lpfnStrToId, lpfnIdToStr));
  38. }
  39.  
  40. BOOL CALLBACK MeterDlgFn
  41.          (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  42.    BOOL fResult = TRUE;
  43.    char szId[20];
  44.    DWORD dwResult;
  45.  
  46.    switch (uMsg) {
  47.       case WM_INITDIALOG:
  48.          GetIdString(hDlg, szId, sizeof(szId));
  49.          SetDlgItemText(hDlg, ID_VALUE, szId);
  50.          break;
  51.  
  52.       case WM_COMMAND:
  53.          switch (wParam) {
  54.             case IDOK:
  55.                GetDlgItemText(hDlg, ID_VALUE, szId, sizeof(szId));
  56.                dwResult = SetIdValue(hDlg, szId);
  57.                if (LOWORD(dwResult) == 0) break;
  58.                // Fall through to IDCANCEL case
  59.  
  60.             case IDCANCEL:
  61.                EndDialog(hDlg, wParam);
  62.                break;
  63.  
  64.             case ID_VALUE:
  65.                if (HIWORD(lParam) == EN_CHANGE)
  66.                   EnableWindow(GetDlgItem(hDlg, IDOK),
  67.                      SendMessage(LOWORD(lParam),
  68.                          WM_GETTEXTLENGTH, 0, 0L) ? TRUE : FALSE);
  69.                break;
  70.  
  71.             default: fResult = FALSE; break;
  72.          }
  73.          break;
  74.  
  75.       default: fResult = FALSE; break;
  76.    }
  77.    return(fResult);
  78. }
  79.  
  80.  
  81. #pragma argsused
  82. WORD WINAPI MeterFlags
  83.          (DWORD dwFlags, LPSTR szString, WORD wMaxString) {
  84.    WORD x;
  85.    *szString = 0;
  86.    x = lstrlen(szString);
  87.    if (x > 0) { x -= sizeof(" | ") - 1; *(szString + x) = 0; }
  88.    return(x);
  89. }
  90.