Cut and Paste in CScrollView
coutop -- coutop@inf.com Friday, January 05, 1996 Hi, We are presently invloved in porting 16 bit MFC code to 32 bit MFC code. We have a view class derived from CScrollView class. We use the view as a shell utility to type in commands at a command line and get the resulting output. However we have to give a cut and paste functionality too. Could someone suggest an efficient method for the same. ** We cannot change the functionality to an extent where we can replace the CScrollView class with the CEditView class Thanks Paul Couto coutop@inf.com
Mike Blaszczak -- mikeblas@interserv.com Monday, January 08, 1996 On Fri, 05 Jan 96, "coutop"wrote: > resulting output. However we have to give a cut and paste > functionality too. Could someone suggest an efficient method for the > same. This problem really comes in three pieces, if you think about it: 1) Making some way to select text in the view. You'll need to start tracking the mouse when the user presses the button, and mark what they've selected as they move the mouse around with the button down. When they let go of the button, you can stop tracking. You need some way for your view to remember what is selected and what isn't. You need to decide how selection will work--will the user select a simple rectangle so they can copy columns, or will the user select lines and lines of text (like a multiline edit control) so they can paste sentences and paragraphs? 2) Once you have some way for the view to remember what is selected, you need to have some way for the view to paint the selection. Your paint routine will be called every time the mouse moves just a little during the selection process, so you had better make sure it is efficient. A good way to do this kind of painting is with the CDC::InvertRect() function. 3) Finally, and this is the easiest part--if the user asks for the "Copy" or "Paste" command in the edit menu, you need to take the text that is selected in the view and toss it on the clipboard. You'll probably just use CF_TEXT, unless you're really concerned about special formatting. You can get a copy of the text and call the appropriate clipboard APIs, like SetClipboardData(). .B ekiM -- TCHAR szDisc[] = _T("These words are my own; I do not speak for Microsoft.");
| Вернуться в корень Архива |