Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. CEdit::LineLength returning zero

CEdit::LineLength returning zero

Scheduled Pinned Locked Moved C / C++ / MFC
databasehelp
15 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Rick York

    Is there a reason you need to use multi-line edit controls of a fixed width? It seems like an array of single line edit controls might do what you need and it is easier to limit the length of data in them.

    F Offline
    F Offline
    ForNow
    wrote on last edited by
    #5

    If they are all adjacent to each other they look like multi line ?

    1 Reply Last reply
    0
    • F ForNow

      Hi I want to limit the number of characters on a line in a multiline edit control I figured I would do CEdit::linelength and divide that by rect.right From getclientrect that would get me the number of pixels per character I would then multiply it by the number of characters I want on a line however Cedit:Linelength return zero my edit control is declared CEdit mycontrol I know under the covers it does a SendMessage EM_LINELENGTH Is there a issue that I dont have a message map The character index is 0

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #6

      This message returns the length of the existing text at that line, not the amount of space available. How many characters are in the control when you call this?

      F 1 Reply Last reply
      0
      • L Lost User

        This message returns the length of the existing text at that line, not the amount of space available. How many characters are in the control when you call this?

        F Offline
        F Offline
        ForNow
        wrote on last edited by
        #7

        Thanks that’s it I wanted to calculate the number of characters the control can hold on a line

        V 1 Reply Last reply
        0
        • F ForNow

          Thanks that’s it I wanted to calculate the number of characters the control can hold on a line

          V Offline
          V Offline
          Victor Nijegorodov
          wrote on last edited by
          #8

          ForNow wrote:

          I wanted to calculate the number of characters the control can hold on a line

          It depends on the font your control is currently using.

          F 1 Reply Last reply
          0
          • V Victor Nijegorodov

            ForNow wrote:

            I wanted to calculate the number of characters the control can hold on a line

            It depends on the font your control is currently using.

            F Offline
            F Offline
            ForNow
            wrote on last edited by
            #9

            using the current font

            V 1 Reply Last reply
            0
            • F ForNow

              using the current font

              V Offline
              V Offline
              Victor Nijegorodov
              wrote on last edited by
              #10

              If your current font is a "proportional" one (like Arial, Times New, ...) then it is not possible to calculate the number of characters in a line in a common case. It will always depend of the text itself. Example: the text "WWW" needs much more pixels than "111". But for non-proportional fonts (like Courier New) both need the same number of pixels.

              F 1 Reply Last reply
              0
              • V Victor Nijegorodov

                If your current font is a "proportional" one (like Arial, Times New, ...) then it is not possible to calculate the number of characters in a line in a common case. It will always depend of the text itself. Example: the text "WWW" needs much more pixels than "111". But for non-proportional fonts (like Courier New) both need the same number of pixels.

                F Offline
                F Offline
                ForNow
                wrote on last edited by
                #11

                I understand that this is the font statement from resource file dialog definition "FONT 8, "MS Shell Dlg", 400, 0, 0x1" I basically editing for hex characters so my GetTTextExtent string is "0123456789ABCDEF" these characters seem like the size even without a Font like courier new

                L 1 Reply Last reply
                0
                • F ForNow

                  Hi I want to limit the number of characters on a line in a multiline edit control I figured I would do CEdit::linelength and divide that by rect.right From getclientrect that would get me the number of pixels per character I would then multiply it by the number of characters I want on a line however Cedit:Linelength return zero my edit control is declared CEdit mycontrol I know under the covers it does a SendMessage EM_LINELENGTH Is there a issue that I dont have a message map The character index is 0

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #12

                  Have you considered deriving your own class from CEdit, something like:

                  class MyCustomEdit : public CEdit
                  {
                  }

                  Then as each character is typed into the control but before the control is updated, figure out what line the cursor is on (I haven't used MFC in a few years so I'm not sure what these two messages would be). If there is room, let the character through, otherwise not.

                  "One man's wage rise is another man's price increase." - Harold Wilson

                  "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                  "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                  F 2 Replies Last reply
                  0
                  • D David Crow

                    Have you considered deriving your own class from CEdit, something like:

                    class MyCustomEdit : public CEdit
                    {
                    }

                    Then as each character is typed into the control but before the control is updated, figure out what line the cursor is on (I haven't used MFC in a few years so I'm not sure what these two messages would be). If there is room, let the character through, otherwise not.

                    "One man's wage rise is another man's price increase." - Harold Wilson

                    "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                    "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                    F Offline
                    F Offline
                    ForNow
                    wrote on last edited by
                    #13

                    probably WM_CHAR and wparam is the keystroke truth that would also save me time on the editing as I can see if it is a valid hex character was entered rather then do GetWindowText to read the entire control Thanks

                    1 Reply Last reply
                    0
                    • F ForNow

                      I understand that this is the font statement from resource file dialog definition "FONT 8, "MS Shell Dlg", 400, 0, 0x1" I basically editing for hex characters so my GetTTextExtent string is "0123456789ABCDEF" these characters seem like the size even without a Font like courier new

                      L Offline
                      L Offline
                      Lost User
                      wrote on last edited by
                      #14

                      That's a proportional font, a 1 will take far less space than an E. If spacing is important then you should use a fixed font in your edit control.

                      1 Reply Last reply
                      0
                      • D David Crow

                        Have you considered deriving your own class from CEdit, something like:

                        class MyCustomEdit : public CEdit
                        {
                        }

                        Then as each character is typed into the control but before the control is updated, figure out what line the cursor is on (I haven't used MFC in a few years so I'm not sure what these two messages would be). If there is room, let the character through, otherwise not.

                        "One man's wage rise is another man's price increase." - Harold Wilson

                        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                        "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                        F Offline
                        F Offline
                        ForNow
                        wrote on last edited by
                        #15

                        This class may provide all the functionality of a DDV macro

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups