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