This post is about something I'm planning on doing that doesn't exist yet, something pretty ambitious. My plan is to create a new type of Win32 edit control, one that has a few more capabilities than the standard edit (or RichEdit) control. My main reason for starting this project is that I want to be able to select text by columns. I used to use an editor called MultiEdit that did this; any of you ever use this? It was a great piece of software from the 1990s, originally running under DOS and then later under early versions of Windows, which had some outstanding features: you could use its macro language to customize it, it had superior block-handling and text-marking functions, support for several programming languages, regular expression search and replace, lots more. And you could select text by columns.
Now why would you need to do that? Well, if you have a file such as this:
1. Sunrise:
Day Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 07:36 07:20 06:42 06:49 06:02 05:33 05:35 06:00 06:33 07:04 07:40 07:16
2 07:36 07:19 06:41 06:48 06:01 05:33 05:35 06:01 06:34 07:05 07:42 07:17
3 07:36 07:18 06:39 06:46 06:00 05:32 05:36 06:02 06:35 07:07 07:43 07:18
4 07:36 07:17 06:37 06:44 05:59 05:32 05:36 06:03 06:36 07:08 07:44 07:19
5 07:36 07:16 06:36 06:43 05:57 05:32 05:37 06:04 06:37 07:09 07:45 07:20
6 07:36 07:15 06:34 06:41 05:56 05:31 05:38 06:05 06:38 07:10 06:47 07:21
7 07:36 07:13 06:32 06:39 05:55 05:31 05:38 06:06 06:39 07:11 06:48 07:22
8 07:36 07:12 06:31 06:38 05:54 05:31 05:39 06:07 06:40 07:12 06:49 07:23
. . .
2. Sunset:
Day Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 16:46 17:22 17:57 19:33 20:07 20:37 20:47 20:26 19:41 18:48 18:00 16:36
2 16:47 17:23 17:59 19:34 20:08 20:38 20:47 20:25 19:39 18:47 17:59 16:36
3 16:48 17:24 18:00 19:35 20:09 20:39 20:47 20:24 19:37 18:45 17:58 16:35
4 16:49 17:26 18:01 19:36 20:10 20:39 20:47 20:22 19:36 18:43 17:57 16:35
5 16:50 17:27 18:02 19:38 20:11 20:40 20:46 20:21 19:34 18:42 17:56 16:35
6 16:51 17:28 18:03 19:39 20:12 20:41 20:46 20:20 19:32 18:40 16:54 16:35
7 16:52 17:30 18:05 19:40 20:13 20:41 20:46 20:19 19:30 18:38 16:53 16:35
8 16:53 17:31 18:06 19:41 20:14 20:42 20:45 20:17 19:29 18:36 16:52 16:35
. . .
and you want to arrange these values in a single column, you need to be able to select a column and copy and paste it. (What I'm after here is determining day length for all the days in a year by subtracting sunrise time from sunset time.) I could do this by hand, of course, by copying and pasting each time one by one, but that's a pain in the ass, and I don't have the patience for it. (Besides, this is why they invented computers!)
I still have my old copy of MultiEdit, but I've finally reached the end of the line with it OS-wise: it ran fine under XP, but no longer runs under Windows 7.

So I want to see if I can possibly get this project at least to the proof-of-concept stage.
There are lots of things that need to be done in order to even design a simple edit control, one that has most of the functionality of the existing Win32 one. Here's at least a partial list:
- Backspace/delete
- Tabs
- Cursor keys
- Buffer memory mgmt.
- Caret
- Insert/overwrite
- Selection
- Copy/cut/paste
- Scrolling
Memory management alone is a huge task, especially if I want to be able to handle extremely large files, say with memory-mapped files.
And then there are the extra goodies I have in mind:
- Line #s
- Column selection
- Basic formatting (bold, italic, etc.)
(that last one would require saving the file in a special format that would retain the text formatting, something like Notepad)
I've got a very basic test bed up and running; I can type text into an EditX window and have the caret track the text correctly, but only for typing forward and backspacing. There's still a long way to go. I'll post some code when it's a little farther along.
If anyone has any suggestions (besides "You're nuts! Forget about it!"), I'd like to hear them. It's a challenging project, but it's also fun, especially when I actually get something to work.