fonts in edit controls
Philip Beck -- splinta@cix.compulink.co.uk Tuesday, February 27, 1996 Hi, I'm trying to create a simple class derived from CEdit which will allow me to control what characters are input, and to set the colour and font used. The problem I'm having is with locating the character's height within the single line edit control. The two commands : xxx.CreateFont(......); SetFont(&xxx); should be enough but when I put the focus in the edit control the cursor (and any text) appear as follows : single line edit control _______________________________ _ _ | | | X | _ int | | _| | |_leading ______ | | | | | | | | | cell | | | | | | height | | | | | | | | | | | | | | | | | | |__|________|_____|_____________| _| |______| | zero flashing cursor The space marked 'X' is what I need to remove, otherwise I can only ever place a tiny font in the edit control. Any help would be very much appreciated. Phil.
Fredrik Gunne -- fge@agema.se Thursday, February 29, 1996 [Mini-digest: 4 responses] > I'm trying to create a simple class derived from CEdit which will allow > me to control what characters are input, and to set the colour and font > used. > > The problem I'm having is with locating the character's height within the > single line edit control. > > The two commands : > xxx.CreateFont(......); > SetFont(&xxx); > should be enough but when I put the focus in the edit control the cursor > (and any text) appear as follows : > > single line edit control > _______________________________ _ _ > | | | X | > _ int | | _| | > |_leading ______ | | | > | | | | | | cell > | | | | | | height > | | | | | | > | | | | | | > | | | | | | > |__|________|_____|_____________| _| > |______| | > > zero flashing cursor > > The space marked 'X' is what I need to remove, otherwise I can only ever > place a tiny font in the edit control. > > Any help would be very much appreciated. > > Phil. I've also had problems resizing edit-control's fonts. In my application, the user can zoom in and out during the time the CEdit is active. To zoom, I use ScaleViewport, which works for all my drawn objects (i.e. rectangles, circles etc). However, to "zoom" the CEdit, I need to change the size of the CEdit (MoveWindow) and change the font size (SetFont). However, sometimes I experienced problems similar to yours. The CEdit would look like this: > | | | X | > _ int | | _| | > |_leading ______ | | > | | | | | cell > | | | | | height > | | | | | > | | | > | | | > |_______________________________| _| > > > zero NO flashing cursor That is, the text was clipped, and the cursor simply wasn't there. After several hours, I found out the following: When the CEdit's font is changed, and the text won't fit in the CEdit, the CEdit's formatting rectangle (see CEdit::)SetRect is not resized to allow for the new font height automatically. If you then use MoveWindow to change the CEdit's size, the formatting rectangle will remain the same. Therefore, I do this each time I change the font or resize the CEdit: * Use DrawText with the DT_CALCRECT-flag to calculate the smallest size necessary to fit the text. * If this size is greater than current, do CEdit::SetRect() with new size So my advice is to play around with SetRect. Regards Fredrik -----From: "Brad Wilson, Crucial Software">> The space marked 'X' is what I need to remove, otherwise I can only ever >> place a tiny font in the edit control. You can't remove X; what you should do, instead, is resize the edit control to be taller. -- Brad Wilson, Crucial Software crucial@ix.netcom.com +1 (810) 620-9803 Custom software engineering services for Microsoft Windows NT and Windows 95 "A suited man smiled, said: 'It's just a matter of time; you can have the world at your feet by tomorrow, just sign on this line.'" - Dream Theater -----From: Barry Tannenbaum Check out GetTextMetrics. The returned TEXTMETRIC structure should have the information that you need to resize your edit control to fit the font. - Barry -------------------------------------------------------------------------------- 3DV Technology, Inc Phone: (603) 595-2200, X228 410 Amherst St., Suite 150 Fax: (603) 595-2228 Nashua, NH 03063 Net: barry@dddv.com -----From: mikeblas@interserv.com It is hard to guess what you're doing because you don't explain how you determine the height you pass to CreateFont(). Are you using the height of the edit control? Are you converting from dialog units to pixels? Are you in the right mapping mode? Are you selecting the right precisions so that you don't let Windows round to the nearest, more efficiently managable size? .B ekiM -- TCHAR szDisc[] = _T("These words are my own; I do not speak for Microsoft.");
| Вернуться в корень Архива |