Annotation of mstools/mfc/doc/tn015.txt, revision 1.1.1.1

1.1       root        1: Microsoft Foundation Classes                           Microsoft Corporation
                      2: Technical Notes
                      3: 
                      4: #15 : Windows for Pen interface to MFC
                      5: 
                      6: This note describes the extra interfaces in 'afxpen.h' that
                      7: provide a C++ interface to the Windows for Pen environment.
                      8: 
                      9: =============================================================================
                     10: What is Windows for Pen ?
                     11: =========================
                     12: 
                     13: Windows for Pen is an extension to Windows 3.1 that provides
                     14: a new input paradigm that uses a pen or stylus for hand writing input.
                     15: 
                     16: If you already have Windows for Pen running on your system, then
                     17: you don't need any more description.  If you don't have it running
                     18: already, please read on, because you can try Pen for Windows
                     19: without having to buy any extra hardware.
                     20: 
                     21: Installing the driver:
                     22: ----------------------
                     23: The Windows SDK includes a sample driver and associated DLLs for a subset
                     24: of the Pen Windows environment. The Microsoft Mouse can be used to get
                     25: a rough idea of how recognition and a pen will work.  
                     26: 
                     27: The file \windev\pen\readme.txt describes the steps needed to 
                     28: install the Pen driver for either a mouse or tablet based system.
                     29: 
                     30: MFC Samples:
                     31: ------------
                     32: All the the MFC samples, and all MFC applications automatically
                     33: are pen aware.  That means that all standard edit controls will
                     34: respond to handwriting.
                     35: 
                     36: Two of the MFC samples support specialized Windows for Pen features.
                     37: 
                     38: CTRLTEST (\c700\mfc\samples\ctrltest) is a general control test applet,
                     39: that includes tests for the extra Pen controls (described below).  If
                     40: CTRLTEST is run without Windows for Pen installed, the "Pen" test menu
                     41: will be disabled.
                     42: 
                     43: SPEAKN (\c700\mfc\samples\speakn) is a sample that uses multimedia
                     44: sound output and the pen input for a simple spelling test.  This
                     45: sample requires a sound capable machine (eg: a full MPC machine
                     46: is not required) and the Window for Pen drivers and DLLs.
                     47: 
                     48: =============================================================================
                     49: Being Pen Aware:
                     50: ================
                     51: 
                     52: There are various degrees of support for pen.  MFC gives your
                     53: applications the first level of support for free.  All MFC
                     54: applications are pen aware, so that normal EDIT/CEdit edit items
                     55: will recognize handwriting automatically.
                     56: 
                     57: With work on your part, you can make your application exploit more of
                     58: the features of pen.
                     59: 
                     60: Pen only apps:
                     61: --------------
                     62: If you want to write a pen-only application, an application that
                     63: requires features of the pen API or the special pen edit controls,
                     64: you must do an extra test in your application's InitInstance
                     65: to make sure that the current running system supports pen input
                     66: (and the PENWIN.DLL is loaded).
                     67: 
                     68: The SPEAKN example shows such a test (using ::GetSystemMetrics for
                     69: SM_PENWINDOWS), and a reasonable MessageBox to alert the user that
                     70: Windows for Pen is required to run this application.
                     71: 
                     72: Pen-only applications should be marked as Win3.1 only applications
                     73: as well (i.e. pass '/31' to the second pass RC command line, see SPEAKN for
                     74: an example).
                     75: 
                     76: Pen Edit controls:
                     77: ------------------
                     78: There are two special handwriting input edit controls supported
                     79: by Windows for Pen and MFC.  HEdit is for handwriting edit input,
                     80: and BEdit is like HEdit, but is for boxed input (those little boxes
                     81: or combs that show where the letters should go).
                     82: These controls and the C++ class interfaces to them provide many
                     83: ways to customize visuals, recognition and so on.
                     84: 
                     85: Handling Writing:
                     86: -----------------
                     87: Another way of exploiting the pen is to actually process writing
                     88: in your client area of your application.
                     89: The complete C Pen API is available to you.  Please refer to 
                     90: the Windows for Pen documentation in the WIndows SDK for more
                     91: details.
                     92: 
                     93: =============================================================================
                     94: Two special controls:
                     95: =====================
                     96: 
                     97: The header file AFXPEN.H includes two C++ classes that interface
                     98: with the Windows for Pen controls HEDIT and BEDIT.
                     99: 
                    100: HEDIT is the general handwriting edit item that you can place in
                    101: dialogs or wherever you would place a normal edit item.  The
                    102: C++ class CHEdit gives you a C++ interface to this control
                    103: (just as CEdit gives you a C++ interface to the Windows EDIT control).
                    104: 
                    105: BEDIT provides additional functionality for boxed edits.
                    106: The C++ class CBEdit gives you a C++ interface to this control.
                    107: 
                    108: For more details on these functions and the behaviour of these
                    109: two edit controls, please refer to the Pen SDK documentation
                    110: (\BIN\PENAPIWH.HLP or \HELP\PENAPIQH.HLP).
                    111: Most of the HEDIT and BEDIT behavior is documented in the topic for
                    112: WM_HEDITCTL.
                    113: 
                    114: 
                    115: CHEdit member functions:
                    116: ------------------------
                    117:     GetInflate/SetInflate       Get/set the inflation size
                    118:     GetRC/SetRC                 Get/set the local recognition context
                    119:     GetUnderline/SetUnderline   Get/set the HEdit underline mode
                    120: 
                    121:     GetInkHandle                Get the current captured ink (can be NULL)
                    122:     SetInkMode                  Start capturing ink
                    123:     StopInkMode                 Stop capturing ink
                    124: 
                    125: CBEdit member functions:
                    126: ------------------------
                    127:     CharOffset                  Get byte offset from logical position
                    128:     CharPosition                Get logical position from byte offset
                    129:     Get/SetBoxLayout            Get/set the BOXLAYOUT structure
                    130:     DefaultFont                 Set back to default font
                    131: 
                    132: =============================================================================
                    133: Pen samples:
                    134: ============
                    135: 
                    136: Along with the samples in the Win SDK (\SAMPLES\...) there are two
                    137: MFC specific sample applications that illustrate the use of Pen.
                    138: 
                    139: CTRLTEST (\C700\MFC\SAMPLES\CTRLTEST) provides several custom control
                    140: examples, including samples of CHEdit and CBEdit controls.  This shows
                    141: you both how to create them from C++ code, as well as creating them
                    142: from dialog templates.
                    143: 
                    144: =============================================================================
                    145: Other Pen APIs:
                    146: ===============
                    147: 
                    148: If you start using some of the more sophisticated features of Windows
                    149: for Pen, some of these interfaces require HWNDs or Windows callbacks.
                    150: 
                    151: You can use the extensible message map architecture to handle the
                    152: new pen windows messages.
                    153: 
                    154: New Pen specific windows messages:
                    155:     ON_MESSAGE(WM_RCRESULT, OnRcResult)
                    156:             // notification of recognition result
                    157:     ON_MESSAGE(WM_GLOBALRCCHANGE, OnGlobalRcChange)
                    158:             // notification of global recongnition parameter changes
                    159:     ON_MESSAGE(WM_SKB, OnSystemKeyboardChange)
                    160:             // notification of system keyboard change
                    161: 
                    162: New Pen specific HEDIT control notifications:
                    163:     ON_CONTROL(HN_ENDREC, IDC_???, OnEndRec)
                    164:     ON_CONTROL(HN_DELAYEDRECOGFAIL, IDC_???, OnDelayedRecogFail)
                    165:     ON_CONTROL(HN_ENDREC, IDC_???, OnRcResult)
                    166:         // where IDC_??? is the control ID of an HEDIT control
                    167: 
                    168: New Pen specific combo-box control notifications:
                    169:     ON_CONTROL(CBN_ENDREC, IDC_???, OnEndRec)
                    170:     ON_CONTROL(CBN_DELAYEDRECOGFAIL, IDC_???, OnDelayedRecogFail)
                    171:     ON_CONTROL(CBN_ENDREC, IDC_???, OnRcResult)
                    172:         // where IDC_??? is the control ID of a combobox control
                    173: 
                    174: =============================================================================

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.