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
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Creating CRichEditCtrl Version 2.0/3.0

Creating CRichEditCtrl Version 2.0/3.0

Scheduled Pinned Locked Moved C / C++ / MFC
questionannouncement
18 Posts 3 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.
  • D David Crow

    HMODULE hLibrary = LoadLibrary("riched20.dll"); m_richedit = CreateWindowEx(0, RICHEDIT_CLASS, "", WS_CHILD | WS_VISIBLE | ES_MULTILINE, 5, 50, 100, 100, GetSafeHwnd(), NULL, NULL, NULL); ::SendMessage(m_richedit, WM_PASTE, 0, 0);

    L Offline
    L Offline
    Larry J Siddens
    wrote on last edited by
    #8

    You are loading the library to check if the riched20.dll is there correct? Now I have one more question. Have you been able to print that area correctly? If so, how? I'm trying to do that. The problem is that we don't know what the output device will be at the time of creation. Interesting twist huh? Thanks again. Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

    D 1 Reply Last reply
    0
    • L Larry J Siddens

      You are loading the library to check if the riched20.dll is there correct? Now I have one more question. Have you been able to print that area correctly? If so, how? I'm trying to do that. The problem is that we don't know what the output device will be at the time of creation. Interesting twist huh? Thanks again. Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

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

      Use EM_SETTARGETDEVICE to set the target device. Then use EM_FORMATRANGE and EM_DISPLAYBAND to display the control's contents. See the MSDN article Q129860.

      L 1 Reply Last reply
      0
      • D David Crow

        Use EM_SETTARGETDEVICE to set the target device. Then use EM_FORMATRANGE and EM_DISPLAYBAND to display the control's contents. See the MSDN article Q129860.

        L Offline
        L Offline
        Larry J Siddens
        wrote on last edited by
        #10

        Thats the caveat Dave, we don't know what the device is when the use uses it! What I'm currently doing is pulling each line out, scanning for font differences and using the TextOut to draw the text. Problem is that the font that shows up on the screen (fitting inside of a box) is either bigger or smaller than what was on the screen. Kind of an interesting puzzle huh? Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

        D 1 Reply Last reply
        0
        • L Larry J Siddens

          Thats the caveat Dave, we don't know what the device is when the use uses it! What I'm currently doing is pulling each line out, scanning for font differences and using the TextOut to draw the text. Problem is that the font that shows up on the screen (fitting inside of a box) is either bigger or smaller than what was on the screen. Kind of an interesting puzzle huh? Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

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

          Ok, I'm a tad confused at this point. Are you wanting to take text from a rich edit control and send it to a printer? It sounds like you need to use GetDeviceCaps() to make sure the target device is setup like the rich edit control.

          L 1 Reply Last reply
          0
          • D David Crow

            Ok, I'm a tad confused at this point. Are you wanting to take text from a rich edit control and send it to a printer? It sounds like you need to use GetDeviceCaps() to make sure the target device is setup like the rich edit control.

            L Offline
            L Offline
            Larry J Siddens
            wrote on last edited by
            #12

            Now I'm confussed? :confused: How do you do that? See if the target device is set up like a rich edit? Am I getting too deep here? I wish I did know what the target device was when the users used it, but that is the requirement. Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

            D 1 Reply Last reply
            0
            • L Larry J Siddens

              Now I'm confussed? :confused: How do you do that? See if the target device is set up like a rich edit? Am I getting too deep here? I wish I did know what the target device was when the users used it, but that is the requirement. Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

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

              You have a rich edit control on a dialog or a form-based view. Yes? What are you wanting to do with the text in the control? As I understood your earlier post, you want to take the text in the control and send it to a printer. Yes?

              L 2 Replies Last reply
              0
              • D David Crow

                You have a rich edit control on a dialog or a form-based view. Yes? What are you wanting to do with the text in the control? As I understood your earlier post, you want to take the text in the control and send it to a printer. Yes?

                L Offline
                L Offline
                Larry J Siddens
                wrote on last edited by
                #14

                I actually sits within an area on a scrollview. Kind of like a text box in word. Then when the time comes, draw the text to the printer or some other device. Sorry for the confustion. Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

                1 Reply Last reply
                0
                • D David Crow

                  You have a rich edit control on a dialog or a form-based view. Yes? What are you wanting to do with the text in the control? As I understood your earlier post, you want to take the text in the control and send it to a printer. Yes?

                  L Offline
                  L Offline
                  Larry J Siddens
                  wrote on last edited by
                  #15

                  I want to output the text in a rich edit control (there are many on the same page) with the same format and fonts usage as in the Rich Edit control. I thought I could use the FormatRange, but since I don't know what the target device is when it is being used, I'm not sure if that would work. So, I was getting one line at a time, then spending time to scan character by character checking the fonts used. When the font changs, then I would save off the font and the text. I continue until the whole line is scanned and getting the height of the text to the baseline. Setting the output to use the base line as the y parameter and outputting it to the device. This is so ineffecient it isn't funny. Am I correct in using FormatRange? OR, could I use FormatRange along with DisplayBand to output line by line. Again, inefficient than doing the whole thing, but it would be better than doing character by character. Thanks Dave. Larry Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

                  S 1 Reply Last reply
                  0
                  • L Larry J Siddens

                    I want to output the text in a rich edit control (there are many on the same page) with the same format and fonts usage as in the Rich Edit control. I thought I could use the FormatRange, but since I don't know what the target device is when it is being used, I'm not sure if that would work. So, I was getting one line at a time, then spending time to scan character by character checking the fonts used. When the font changs, then I would save off the font and the text. I continue until the whole line is scanned and getting the height of the text to the baseline. Setting the output to use the base line as the y parameter and outputting it to the device. This is so ineffecient it isn't funny. Am I correct in using FormatRange? OR, could I use FormatRange along with DisplayBand to output line by line. Again, inefficient than doing the whole thing, but it would be better than doing character by character. Thanks Dave. Larry Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

                    S Offline
                    S Offline
                    Steve S
                    wrote on last edited by
                    #16

                    I do something very similar. For a billing application I wrote, a number of users wanted "word processing", so I use a commentary window which is a richedit. I use FormatRange to step through appropriately sized chunks of the richedit, by working out what printable space there is (in twips), and making repeated calls, to build up a list of ranges (since it could be multi-page), more efficient than scanning the control's contents for changes (although it's similar to what the control is probably doing internally). Steve S

                    L 1 Reply Last reply
                    0
                    • S Steve S

                      I do something very similar. For a billing application I wrote, a number of users wanted "word processing", so I use a commentary window which is a richedit. I use FormatRange to step through appropriately sized chunks of the richedit, by working out what printable space there is (in twips), and making repeated calls, to build up a list of ranges (since it could be multi-page), more efficient than scanning the control's contents for changes (although it's similar to what the control is probably doing internally). Steve S

                      L Offline
                      L Offline
                      Larry J Siddens
                      wrote on last edited by
                      #17

                      Did you use the SetTargetDevice to make it WYSIWYG? The problem I'm having (or maybe I'm just making it harder than it really is) is that I don't know what tht output device will be at the time they enter in the data. Thanks for the Reply and info Steve. Larry Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

                      1 Reply Last reply
                      0
                      • D David Crow

                        What specifically is not working for you? If the control's parent is a dialog, add a control variable to the dialog's .H file, and then in the dialog's OnInitDialog() method, add: AfxInitRichEdit(); richedit.Create(...);

                        L Offline
                        L Offline
                        Larry J Siddens
                        wrote on last edited by
                        #18

                        I have tried using the SetTargetDevice with the width of the window (in TWIPS) and getting the printer DC. The text is coming out in the proper format (line breaks and all), but the graphics that surround that are not. As an example, I place a line just to the end of the line, then do a print preview and the text extends past this line. I can send the test code that I'm playing with so you can see what I'm seeing. I am also getting conviced to do WYSIWYG, I really do need the output device to do the formatting. With out the device, what I need to do is seeming more and more impossible without a lot of fudging! Thanks you Guys. Larry Larry J. Siddens Cornerstone Communications TAME THE DOCUMENT MONSTER www.unifier.biz

                        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