home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 7.ddi / MWHC.007 / HB < prev    next >
Encoding:
Text File  |  1991-08-27  |  9.6 KB  |  352 lines

  1. /****************************************************************************
  2.     MODULE: cfont.c
  3.  
  4.     FUNCTION: CFontDlg(HWND, unsigned, WORD, LONG);
  5.  
  6.     PURPOSE: Processes dialog box messages for creating a font
  7.  
  8. ****************************************************************************/
  9.  
  10. #include "windows.h"
  11. #include "showfont.h"
  12.  
  13. LOGFONT CLogFont;
  14.  
  15. BOOL FAR PASCAL CFontDlg(hDlg, message, wParam, lParam)
  16. HWND hDlg;
  17. unsigned    message;
  18. WORD wParam;
  19. LONG lParam;
  20. {
  21.     switch (message) {
  22.     case WM_INITDIALOG:
  23.         SetDlgItemInt(hDlg, ID_HEIGHT, CLogFont.lfHeight, TRUE);
  24.         SetDlgItemInt(hDlg, ID_WIDTH, CLogFont.lfWidth, TRUE);
  25.         SetDlgItemInt(hDlg, ID_ESCAPEMENT,
  26.         CLogFont.lfEscapement, TRUE);
  27.         SetDlgItemInt(hDlg, ID_ORIENTATION,
  28.         CLogFont.lfOrientation, TRUE);
  29.         SetDlgItemText(hDlg, ID_FACE, (LPSTR)CLogFont.lfFaceName);
  30.         CheckDlgButton(hDlg, ID_ITALIC, CLogFont.lfItalic);
  31.         CheckDlgButton(hDlg, ID_UNDERLINE, CLogFont.lfUnderline);
  32.         CheckDlgButton(hDlg, ID_STRIKEOUT, CLogFont.lfStrikeOut);
  33.  
  34.         SetDlgItemInt(hDlg, ID_WEIGHT, CLogFont.lfWeight, TRUE);
  35.         switch (CLogFont.lfWeight) {
  36.         case FW_LIGHT:
  37.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_LIGHT);
  38.             break;
  39.  
  40.         case FW_NORMAL:
  41.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_NORMAL);
  42.             break;
  43.  
  44.         case FW_BOLD:
  45.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_BOLD);
  46.             break;
  47.         }
  48.  
  49.         SetDlgItemInt(hDlg, ID_CHARSET, CLogFont.lfCharSet, TRUE);
  50.         switch (CLogFont.lfCharSet) {
  51.         case ANSI_CHARSET:
  52.             CheckRadioButton(hDlg, ID_ANSI, ID_OEM, ID_ANSI);
  53.             break;
  54.  
  55.         case OEM_CHARSET:
  56.             CheckRadioButton(hDlg, ID_ANSI, ID_OEM, ID_OEM);
  57.             break;
  58.         }
  59.  
  60.         switch (CLogFont.lfOutPrecision) {
  61.         case OUT_STRING_PRECIS:
  62.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  63.             ID_OUT_STRING);
  64.             break;
  65.  
  66.         case OUT_CHARACTER_PRECIS:
  67.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  68.             ID_OUT_CHAR);
  69.             break;
  70.  
  71.         case OUT_STROKE_PRECIS:
  72.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  73.             ID_OUT_STROKE);
  74.             break;
  75.  
  76.         case OUT_DEFAULT_PRECIS:
  77.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  78.             ID_OUT_DEFAULT);
  79.             break;
  80.         }
  81.  
  82.         switch (CLogFont.lfClipPrecision) {
  83.         case CLIP_CHARACTER_PRECIS:
  84.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  85.             ID_CLIP_CHAR);
  86.             break;
  87.  
  88.         case CLIP_STROKE_PRECIS:
  89.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  90.             ID_CLIP_STROKE);
  91.             break;
  92.  
  93.         case CLIP_DEFAULT_PRECIS:
  94.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  95.             ID_CLIP_DEFAULT);
  96.             break;
  97.         }
  98.  
  99.         switch (CLogFont.lfQuality) {
  100.         case PROOF_QUALITY:
  101.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY, ID_PROOF);
  102.             break;
  103.  
  104.         case DRAFT_QUALITY:
  105.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY, ID_DRAFT);
  106.             break;
  107.  
  108.         case DEFAULT_QUALITY:
  109.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY,
  110.             ID_DEF_QUALITY);
  111.             break;
  112.         }
  113.  
  114.         switch ((CLogFont.lfPitchAndFamily) & 3) {
  115.         case FIXED_PITCH:
  116.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH, ID_FIXED);
  117.             break;
  118.  
  119.         case VARIABLE_PITCH:
  120.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH, ID_VARIABLE);
  121.             break;
  122.  
  123.         case DEFAULT_PITCH:
  124.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH,
  125.             ID_DEF_PITCH);
  126.             break;
  127.         }
  128.  
  129.         switch ((CLogFont.lfPitchAndFamily) & 240) {
  130.         case FF_ROMAN:
  131.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_ROMAN);
  132.             break;
  133.  
  134.         case FF_SWISS:
  135.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_SWISS);
  136.             break;
  137.  
  138.         case FF_MODERN:
  139.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_MODERN);
  140.             break;
  141.  
  142.         case FF_SCRIPT:
  143.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_SCRIPT);
  144.             break;
  145.  
  146.         case FF_DECORATIVE:
  147.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_DECO);
  148.             break;
  149.  
  150.         case FF_DONTCARE:
  151.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY,
  152.             ID_DEF_FAMILY);
  153.             break;
  154.         }
  155.         break;
  156.  
  157.     case WM_COMMAND:
  158.         switch (wParam) {
  159.         case IDOK:
  160.             CLogFont.lfHeight = GetDlgItemInt(hDlg,
  161.             ID_HEIGHT, NULL, TRUE);
  162.             CLogFont.lfWidth = GetDlgItemInt(hDlg,
  163.             ID_WIDTH, NULL, TRUE);
  164.             CLogFont.lfEscapement = GetDlgItemInt(hDlg,
  165.             ID_ESCAPEMENT, NULL, FALSE);
  166.             CLogFont.lfOrientation = GetDlgItemInt(hDlg,
  167.             ID_ORIENTATION, NULL, FALSE);
  168.             GetDlgItemText(hDlg, ID_FACE, (LPSTR)CLogFont.lfFaceName, 32);
  169.             CLogFont.lfWeight = GetDlgItemInt(hDlg,
  170.             ID_WEIGHT, NULL, FALSE);
  171.             CLogFont.lfCharSet = GetDlgItemInt(hDlg,
  172.             ID_CHARSET, NULL, FALSE);
  173.             EndDialog(hDlg, 1);
  174.             break;
  175.  
  176.         case IDCANCEL:
  177.             EndDialog(hDlg, 0);
  178.             break;
  179.  
  180.         case ID_ITALIC:
  181.             CLogFont.lfItalic = IsDlgButtonChecked(hDlg, ID_ITALIC);
  182.             break;
  183.  
  184.         case ID_UNDERLINE:
  185.             CLogFont.lfUnderline = IsDlgButtonChecked(hDlg,
  186.             ID_UNDERLINE);
  187.             break;
  188.  
  189.         case ID_STRIKEOUT:
  190.             CLogFont.lfStrikeOut = IsDlgButtonChecked(hDlg,
  191.             ID_STRIKEOUT);
  192.             break;
  193.  
  194.         case ID_LIGHT:
  195.             SetDlgItemInt(hDlg, ID_WEIGHT, CLogFont.lfWeight, TRUE);
  196.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_LIGHT);
  197.             CLogFont.lfWeight = FW_LIGHT;
  198.             break;
  199.  
  200.         case ID_NORMAL:
  201.             SetDlgItemInt(hDlg, ID_WEIGHT, CLogFont.lfWeight, TRUE);
  202.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_NORMAL);
  203.             CLogFont.lfWeight = FW_NORMAL;
  204.             break;
  205.  
  206.         case ID_BOLD:
  207.             SetDlgItemInt(hDlg, ID_WEIGHT, CLogFont.lfWeight, TRUE);
  208.             CheckRadioButton(hDlg, ID_LIGHT, ID_BOLD, ID_BOLD);
  209.             CLogFont.lfWeight = FW_BOLD;
  210.             break;
  211.  
  212.         case ID_WEIGHT:
  213.             CheckDlgButton(hDlg, ID_LIGHT, FALSE);
  214.             CheckDlgButton(hDlg, ID_NORMAL, FALSE);
  215.             CheckDlgButton(hDlg, ID_BOLD, FALSE);
  216.             break;
  217.  
  218.         case ID_ANSI:
  219.             SetDlgItemInt(hDlg, ID_CHARSET, CLogFont.lfCharSet, TRUE);
  220.             CheckRadioButton(hDlg, ID_ANSI, ID_OEM, ID_ANSI);
  221.             break;
  222.  
  223.         case ID_OEM:
  224.             SetDlgItemInt(hDlg, ID_CHARSET, CLogFont.lfCharSet, TRUE);
  225.             CheckRadioButton(hDlg, ID_ANSI, ID_OEM, ID_OEM);
  226.             break;
  227.  
  228.         case ID_CHARSET:
  229.             CheckDlgButton(hDlg, ID_ANSI, FALSE);
  230.             CheckDlgButton(hDlg, ID_OEM, FALSE);
  231.             break;
  232.  
  233.         case ID_OUT_STRING:
  234.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  235.             ID_OUT_STRING);
  236.             CLogFont.lfOutPrecision = OUT_STRING_PRECIS;
  237.             break;
  238.  
  239.         case ID_OUT_CHAR:
  240.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  241.             ID_OUT_CHAR);
  242.             CLogFont.lfOutPrecision = OUT_CHARACTER_PRECIS;
  243.             break;
  244.  
  245.         case ID_OUT_STROKE:
  246.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  247.             ID_OUT_STROKE);
  248.             CLogFont.lfOutPrecision = OUT_STROKE_PRECIS;
  249.             break;
  250.  
  251.         case ID_OUT_DEFAULT:
  252.             CheckRadioButton(hDlg, ID_OUT_STRING, ID_OUT_DEFAULT,
  253.             ID_OUT_DEFAULT);
  254.             CLogFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
  255.             break;
  256.  
  257.         case ID_CLIP_CHAR:
  258.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  259.             ID_CLIP_CHAR);
  260.             CLogFont.lfClipPrecision = CLIP_CHARACTER_PRECIS;
  261.             break;
  262.  
  263.         case ID_CLIP_STROKE:
  264.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  265.             ID_CLIP_STROKE);
  266.             CLogFont.lfClipPrecision = CLIP_STROKE_PRECIS;
  267.             break;
  268.  
  269.         case ID_CLIP_DEFAULT:
  270.             CheckRadioButton(hDlg, ID_CLIP_CHAR, ID_CLIP_DEFAULT,
  271.             ID_CLIP_DEFAULT);
  272.             CLogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
  273.             break;
  274.  
  275.         case ID_PROOF:
  276.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY, ID_PROOF);
  277.             CLogFont.lfQuality = PROOF_QUALITY;
  278.             break;
  279.  
  280.         case ID_DRAFT:
  281.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY, ID_DRAFT);
  282.             CLogFont.lfQuality = DRAFT_QUALITY;
  283.             break;
  284.  
  285.         case ID_DEF_QUALITY:
  286.             CheckRadioButton(hDlg, ID_PROOF, ID_DEF_QUALITY,
  287.             ID_DEF_QUALITY);
  288.             CLogFont.lfQuality = DEFAULT_QUALITY;
  289.             break;
  290.  
  291.         case ID_FIXED:
  292.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH, ID_FIXED);
  293.             CLogFont.lfPitchAndFamily =
  294.             (~3 & CLogFont.lfPitchAndFamily) | FIXED_PITCH;
  295.             break;
  296.  
  297.         case ID_VARIABLE:
  298.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH, ID_VARIABLE);
  299.             CLogFont.lfPitchAndFamily =
  300.             (~3 & CLogFont.lfPitchAndFamily) | VARIABLE_PITCH;
  301.             break;
  302.  
  303.         case ID_DEF_PITCH:
  304.             CheckRadioButton(hDlg, ID_FIXED, ID_DEF_PITCH,
  305.             ID_DEF_PITCH);
  306.             CLogFont.lfPitchAndFamily =
  307.             (~3 & CLogFont.lfPitchAndFamily) | DEFAULT_PITCH;
  308.             break;
  309.  
  310.         case ID_ROMAN:
  311.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_ROMAN);
  312.             CLogFont.lfPitchAndFamily =
  313.             (~240 & CLogFont.lfPitchAndFamily) | FF_ROMAN;
  314.             break;
  315.  
  316.         case ID_SWISS:
  317.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_SWISS);
  318.             CLogFont.lfPitchAndFamily =
  319.             (~240 & CLogFont.lfPitchAndFamily) | FF_SWISS;
  320.             break;
  321.  
  322.         case ID_MODERN:
  323.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_MODERN);
  324.             CLogFont.lfPitchAndFamily =
  325.             (~240 & CLogFont.lfPitchAndFamily) | FF_MODERN;
  326.             break;
  327.  
  328.         case ID_SCRIPT:
  329.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_SCRIPT);
  330.             CLogFont.lfPitchAndFamily =
  331.             (~240 & CLogFont.lfPitchAndFamily) | FF_SCRIPT;
  332.             break;
  333.  
  334.         case ID_DECO:
  335.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY, ID_DECO);
  336.             CLogFont.lfPitchAndFamily =
  337.             (~240 & CLogFont.lfPitchAndFamily) | FF_DECORATIVE;
  338.             break;
  339.  
  340.         case ID_DEF_FAMILY:
  341.             CheckRadioButton(hDlg, ID_ROMAN, ID_DEF_FAMILY,
  342.             ID_DEF_FAMILY);
  343.             CLogFont.lfPitchAndFamily =
  344.             (~240 & CLogFont.lfPitchAndFamily) | FF_DONTCARE;
  345.             break;
  346.  
  347.         }
  348.         break;
  349.        }
  350.        return (FALSE);
  351. }
  352.