// Tfont.h : interface of the CTfont class // This class takes text entry from the user. // It is derived from the CEdit class /***************************************************************************/ #ifndef __Tfont_H__ #define __Tfont_H__ // TOOLBAAR CONSTANTS -- Bitmap Positions and Toolbar Positions #define MAX_TBAR_ITEMS 12 // positions 0 through 11 #define BOLD_BMP_POS 0 #define ITALIC_BMP_POS 1 #define UNDERLINE_BMP_POS 2 #define VERTEDIT_BMP_POS 3 #define PEN_BMP_POS 4 #define EDITTEXT_BMP_POS 5 #define KEYBOARD_BMP_POS 6 // still wasting space in image #define INS_SPACE_BMP_POS 7 #define BACKSPACE_BMP_POS 8 #define NEWLINE_BMP_POS 9 #define SHADOW_BMP_POS -1 // don't exist currently #define BOLD_TBAR_POS 0 #define ITALIC_TBAR_POS 1 #define UNDERLINE_TBAR_POS 2 #define VERTEDIT_TBAR_POS 3 #define SPACE_ONE 4 #define PEN_TBAR_TEXT_POS 5 #define INS_SPACE_TBAR_POS 5 #define BACKSPACE_TBAR_POS 6 #define NEWLINE_TBAR_POS 7 #define SPACE_TWO 8 #define EDITTEXT_TBAR_POS 9 #define SPACE_THREE 10 #define PEN_TBAR_PEN_POS 11 #define SHADOW_TBAR_POS -1 // don't exist currently #define KEYBOARD_TBAR_POS -1 // don't exist currently #define FONT_BMP_TXT_BORDER 2 // # pixels between font bmp (prn/tt) and text #define UM_DELAYED_TOOLBAR WM_USER + 900 // definde font types used by m_iFontType in CTfont class #define TT_FONT 0x0001 #define TT_OPENTYPE_FONT 0x0002 #define PS_OPENTYPE_FONT 0x0004 #define TYPE1_FONT 0x0008 #define DEVICE_FONT 0x0010 #define RASTER_FONT 0x0020 #define NumCPic 5 class CTedit; // forward reference for change/undo notification //class CAttrEdit; // forward reference for setfont,...notification /******************************************************************************/ class CTfontTbar : public CToolBar { private: protected: // create from serialization only DECLARE_DYNCREATE(CTfontTbar) protected: //{{AFX_MSG(CTfontTbar) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! // afx_msg void OnInsertObject(); // OLE support //}}AFX_MSG DECLARE_MESSAGE_MAP() public: CTfontTbar(void); virtual ~CTfontTbar(void); BOOL Create(CWnd* pcParentWnd, BOOL bShowPen = FALSE); }; /******************************************************************************/ class CTfontDlg : public CDialogBar { private: CPic m_cPictures[NumCPic]; int m_Max_cx_FontType_BMP; void SetColorsInDC(HDC hdc, BOOL bInverted); protected: // create from serialization only DECLARE_DYNCREATE(CTfontDlg) protected: //{{AFX_MSG(CTfontDlg) afx_msg void OnRButtonDown ( UINT nFlags, CPoint point ); // // MFC 4 - had to put the WM_DRAWITEM and WM_MEASUREITEM handlers here instead // of CTfont. This dialog is the real parent of the owner-draw combobox, don't // know how the old version worked with these handlers in CTfont. // afx_msg void OnDrawItem (int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct); afx_msg void OnMeasureItem (int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct); afx_msg DWORD OnGetDefId ( void ); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: CTfontDlg(void); void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct, CString *pcStringText); virtual ~CTfontDlg(void); BOOL Create(CWnd* pcParentWnd); }; /******************************************************************************/ class CCharSetDesc; class CFontDesc; /******************************************************************************/ class CTfont : public CMiniFrmWnd { private: int m_iControlIDLastChange; int m_iWeight; CFont m_cCurrentFont; CString m_cStrTypeFaceName; CString m_cStrTypeFaceNamePrev; int m_iPointSize; int m_iPointSizePrev; CString m_strFontName; int m_iFontType; BYTE m_nCharSet; BYTE m_nCharSetPrev; BOOL m_bBoldOn; BOOL m_bItalicOn; BOOL m_bUnderlineOn; BOOL m_bVertEditOn; BOOL m_bShadowOn; BOOL m_bPenOn; CRect m_cRectWindow; BOOL m_bDisplayCText; BOOL m_bInUpdate; class CTedit* m_pcTedit; CTfontDlg m_cTfontDlg; CTfontTbar *m_pcTfontTbar; // must be dynamic for changing buttons (delete/new) BYTE PickCharSet(CCharSetDesc *pCharSetDescList, int iCharSetSelection); void ResizeWindow(void); void ProcessNewTypeface(void); void UpdateEditControlFont(void); void FreeMemoryFromCBox(void); void OnTypeFaceComboBoxUpdate(void); void OnPointSizeComboBoxUpdate(void); void SaveToIniFile(void); void ReadFromIniFile(void); // was used for spin control to save point sizes,... // CMapWordToPtr PointSizeMap; // void EmptyMap(void); void RefreshFontList(void); int EnumFontFace( ENUMLOGFONTEX* lpEnumLogFont, NEWTEXTMETRICEX* lpNewTextMetric, int iFontType ); int EnumFontSizes( LPENUMLOGFONT lpEnumLogFont, LPNEWTEXTMETRIC lpNewTextMetric, int iFontType ); protected: // create from serialization only DECLARE_DYNCREATE(CTfont) //{{AFX_MSG(CTfont) afx_msg void OnTypefaceChange(); afx_msg void OnPointSizeChange(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnSetFocus(CWnd* pOldWnd); afx_msg void OnDestroy(); afx_msg void OnMove(int x, int y); afx_msg void OnClose(); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: CTfont(); CTfont( CTedit *pcTedit ); ~CTfont(void); CWnd* GetFontSizeControl() { return ((m_cTfontDlg.GetSafeHwnd() == NULL)? NULL: m_cTfontDlg.GetDlgItem( IDC_POINTSIZE ) ); } CWnd* GetFontFaceControl() { return ((m_cTfontDlg.GetSafeHwnd() == NULL)? NULL: m_cTfontDlg.GetDlgItem( IDC_TYPEFACE ) ); } //MY AFX_MSG(CTfont) afx_msg void OnBold ( void ); afx_msg void OnItalic ( void ); afx_msg void OnUnderline ( void ); afx_msg void OnVertEdit ( void ); afx_msg void OnVertEditUpdate ( CCmdUI* pCmdUI ); afx_msg void OnShadow ( void ); afx_msg void OnPen ( void ); afx_msg long OnDelayedPen( WPARAM wParam, LPARAM lParam ); afx_msg void OnEditText ( void ); afx_msg void OnKeyboard ( void ); afx_msg void OnInsSpace ( void ); afx_msg void OnBackSpace ( void ); afx_msg void OnNewLine ( void ); //MY AFX_MSG BOOL IsBoldOn ( void ) { return m_bBoldOn; } BOOL IsItalicOn ( void ) { return m_bItalicOn; } BOOL IsUnderlineOn ( void ) { return m_bUnderlineOn; } BOOL IsVertEditOn ( void ) { return m_bVertEditOn; } BOOL IsShadowOn ( void ) { return m_bShadowOn; } BOOL Create ( CRect rectEditArea ); void Undo ( void ); void RefreshToolBar( void ); void GetFontInfo ( int iFontSelection, BYTE nCharSetSelection); static int CALLBACK EnumFontFaceProc(ENUMLOGFONTEX* lpEnumLogFont, NEWTEXTMETRICEX* lpNewTextMetric, int iFontType, LPARAM lParam); static int CALLBACK EnumFontOneFaceProc(LPENUMLOGFONT lpEnumLogFont, LPNEWTEXTMETRIC lpNewTextMetric, int iFontType, LPARAM lParam); virtual WORD GetHelpOffset() {return 0;} // for now just return 0 virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void RecalcLayout(BOOL bNotify = TRUE); }; /***************************************************************************/ #endif // __Tfont_H__