Your favorite Visual Basic 6.0 tools and tips [closed] - vb6

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
This is somewhat related to a similar post, but that post was Visual Studio 6 in general and a lot of the suggestions didn't apply to Visual Basic 6.0.
Suggest or vote for tools/tips. Please one tool/tip per post so that everyone can vote on them individually. Include a brief description of what the tools do.

Enable mouse wheel in VB6:
Microsoft:enable the mouse scroll wheel

MZ Tools.
Free.
Lots of extra tools for the IDE, like "Favorite Procedures" and "Add error routine to prodedure" and lots more.
http://www.mztools.com/v3/mztools3.aspx

After installing VB6, I always do these customisations on Tools-Options.
Switch off Auto Syntax Check on the Editor tab. You don't want message boxes when you type a syntax error - you just want the problem line shown in red so you can fix it later.
Switch on Require Variable Declaration on the Editor tab. Don't think, just do it.
Switch off Compile On Demand on the General tab. You want to be told about syntax errors immediately when you run your code, not just when the dodgy routine actually gets called.
EDIT: Prompt to save changes when program starts, on the Environment tab. (Thanks wqw for reminding me in the comments.)
Set Error Trapping to "Break on unhandled errors" on the General tab. Actually, this is a personal preference - but you should select the setting that suits you. Hopefully you've worked out an error handling strategy for the VB6 program?
I have an LCD screen, and the default colours don't work very well, so I change them to lighter ones. I'm also using the Consolas font. Makes my VB6 code look twenty-first century anyway :)

It's amazing how many people don't use the IDE buttons for commenting-out and uncommenting blocks of source code. They are on the Edit toolbar and look like this: alt text http://img231.imageshack.us/img231/1949/vb6commentbuttons.gif. Right-click in an unoccupied part of the toolbar area and tick the Edit option to display the toolbar.
I once attended an "Advanced VB6" course where the instructor didn't know about those buttons.
EDIT: AngryHacker has a way to associate shortcut keys with these buttons to comment and uncomment code blocks at a keystroke.

I can't believe no one has yet posted Bruce McKinney's Hardcore Visual Basic (now free online on mvps.org)! OK it's a book rather than a piece of software, but it expands to a veritable cornucopia of tools and tips.

SmartIndenter takes care of all the auto-indenting. It does one thing and it does it really well. And it's free.
http://www.oaltd.co.uk/Indenter/Default.htm
SmartIndenter http://img151.imageshack.us/img151/1392/screencaps1.jpg

The vbAccelerator website. It has so many great examples and free controls with the full source. The site has not been updated in a few years now, but it still keeps running and I still go back to it when working in VB6.

I realllly hate checking to see if an array is uninitialized by passing it to a helper function that tries to do a UBound and catches the error if it occurs.
Solution?
Use VarPtr to get the array's address, pass the address to CopyMemory to get the SafeArray structure for the array, if the SafeArray structure indicates 0 dimensions, the array is uninitialized.
EDIT thanks to Lance for good link with example
http://vbnet.mvps.org/index.html?code/helpers/getarraydims.htm

The entire mvps.org site here
I recommend Karl Peterson' One stop source and Randy Birch's VBnet (which has nothing to do with VB.NET) and Common Controls Replacement Project.

Design Patterns by the GoF. While it doesn't seem specific for VB6 the fact that most of the patterns are based interface implementation and aggregating objects (as opposed to inheritance) makes it well suited for use with VB6. They talk about this on pages 16 to 18 and sum it up in one statement. Program to an interface, not an implmentation If there is one thing that VB6 and COM does well is handle interfaces.

Make My Manifest can produce Reg-Free COM manifests (chucking in "Styles" as needed, etc.). This allows XCopy deployment of many VB6 EXEs to WinXP or later.
No more "dependency" fears or DLL Hell!

The VB6 IDE doesn't remember your preference for maximizing the code windows. To start up with the VB6 code windows maximized, set this string registry key:
[HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0]
"MdiMaximized"="1"

Check out http://angryhacker.com/blog/archive/2008/05/01/vb6-swiss-army-knife.aspx
It has most tools I use for whenever I have to delve into VB6, plus a description of what they do. In addition to the tools mentioned here, it also has the following:
PDSA Property Creator
ADO Stored Proc Generator Add-in
Collection Class Master Add-in

Matt Curlands Power VB book and the VBoost tools that came with it, especially the Type library editor.
Just watch out for the non-DEP compliant techniques.

The vbAdvance add-in is now free.
vbAdvance is a Visual Basic Add-In that gives you access to advanced build features and many IDE convenience features. Create console apps, create standard DLLs that export functions, create a DllMain entry point in your DLLs, XP Manifest compiler for XP styles, Terminal Server, etc.

CodeSmart 2009 for VB6
I've not tried this.
http://www.axtools.com/products/cs2k3vb_screenshots.htm

I discovered a lot of things when I was first learning by using the wizards to make forms/small applications, and then examining the code they output.

One great tool that is out there and I've used is called CodeFixer. I believe I first stumbled across CodeFixer here.
It's even open source. I have had a little contact with the author, Roger Gilchrist, and he seems to still be working on it in his, surely limited, free time.

VB6 error handling sucks. So I've adopted these patterns to make it easier:
The Try-Catch block:
'Try
On Error Goto catchX
...
'Catch
catchX: if err.number then
...
resume resumX
resumX: end if
On Error Goto outside_catch_label_name
'End Try
Including a stack trace in errors:
sub rethrow(byval source as string)
Err.Source = Err.Source & vbNewLine & vbTab & "# " & Source
Err.Raise Err.Number, Err.Source, Err.Description
end sub
sub some_sub: on error goto throw
...
throw: if err.number then rethrow("some_sub")
end sub

I haven't tried this myself yet, but CodeShine is a cheap refactoring add-in for VB6. It can do the useful extract method refactoring, apparently.
I must stop wasting time here and download the free trial to try it out.

Aivosto's Project Analyzer http://www.aivosto.com/project/project.html

Spider Eye Flexbag
The collection class replacement from Spider Eye called Spider Eye Flexbag is an absolute must. Its 100% better than the collection classes that ship with VB and its blindingly fast compared to the original collections. The Flexbag collection was written by Gary Wisniewski of "Carl 'n Gary's Visual Basic Home Page" fame.
Unfortunately the Spider Eye website doesn't seem to have a link to the Flex Bag at the moment, but I'm sure if you contact them they'd be happy to sort something out for you. If you are doing any collection based work at all then it would be well worth the effort.
AVE Code Finder
The AVE Code Finder is handy because the Find function in the VB6 IDE can't be trusted. AVE Code Finder is also much much faster then the built in Find. It was written by Jarek Zwierz of www.ave.com.pl but the site doesn't seem to exist anymore so the version I've linked to is at VB2TheMax.

The VB6 Credits Easter Egg that lists the development team :)
To show the VB6 Program Credits create an 'About' button to the standard
toolbar and rename its caption to 'Show VB Credits'. Here's a bit more
detail:
Right-Click on a toolbar and select 'Customize'
Within the 'Commands' tab select the 'Help' category
Drag the 'About Microsoft Visual Basic' command (right windows of dialog
box) up to the end of the standard toolbar.
Without closing the 'Customize' dialog box, Right-Click on the button you
just created and change its Name to 'Show VB Credits'
Close 'Customize' and click the new button.
Bonus points for spotting famous names.

I purchased the Codejock SuitePro for my company. They have many components to be used in VB6 and C++, including the support to XAML in controls, that is a lightweight version of the WPF.

Related

vb6 icon location on windows

Where can I find the orginal vb6 ( or windows ) icon? (.ico files)
I need, error, warning, question, and information icons which come up on the messagebox.
Thanks a lot.
As the icons can differ for each OS version, you can get the icons from Windows using LoadIcon() passing one of the standard icon IDs.
See http://msdn.microsoft.com/en-us/library/ms648072.aspx for details.
If you want them as .ico files, you can extract them (on your development machine) from user32.dll using a resource editor.
(Updated with corrected info from Cody Gray)
The standard Windows message box icons have changed many times across the various versions of Windows. They're included with a couple of the system DLL files, but you shouldn't try and extract them dynamically yourself. As I mentioned in a comment to another answer, the ID numbers are undocumented for a reason: namely because it's possible for them to change in future versions of Windows or even in future Windows updates. There's absolutely no reason to go through the effort trying to extract them, either. Windows will already retrieve them for you, if you ask nicely.
The nice way of asking is to use the LoadIcon function, and specify the IDI identifier of the icon you want. Windows will return an HICON value, or a handle to an icon resource.
Since you mention that you're using VB.NET, you can also use the SystemIcons class, which has static properties to return any of the common icons. This is a .NET wrapper that saves you from having to P/Invoke the LoadIcon function from the Windows API yourself.
Better yet, if you just want to display a message box containing one of the icons, all you have to do is call the MessageBox API function. Tell Windows the MB_ICON value that you want, and you're off. As before, this has already been wrapped for you by the .NET Framework in the identically-named MessageBox class.
The benefit of both of these functions is that they'll always return the correct icons regardless of the current version of Windows. A comment made attempting to clarify the question seems to suggest that you want to use the old icons on a current version of Windows. But of course, you do not want to do this. The icons have been updated throughout the Windows shell for a good reason, and your application should take advantage of them. The new icons are more clear and fit in better with the overall system theme. Additionally, if your app still uses the old icons, it will be confusing to users and look very out of place. It's always best to follow standard platform conventions, rather than trying to do "something else", even if you think your "something else" is "better" for whatever reason than the platform default. Your users will not agree, and your application will reflect your shoddy craftsmanship.
Since people who ask this type of question inevitably disagree with me and insist that they must do it anyway, and that it is a "requirement" (whatever that means), I'll point out that the old icons are not available in the newer versions of Windows. The icons have been completely replaced throughout the system for a reason. It's also strictly forbidden by the licensing agreements to extract icons from system DLL files and redistribute them with your application. Don't do this.
Also, before deciding on which icon you should display in your message box, be sure to consult Microsoft's Windows User Experience Interaction Guidelines, which provide some very handy rules on selecting the proper icon to convey the right message and fit with the Windows tone. I provide more information on that in my answer here; very much recommended reading for any Windows application developer.
Edit: It's like pulling teeth to get any more details on this question. I'm not sure why you're so secretive about what you're trying to accomplish, but note that in the future, you'll have a lot better luck including these things in your question to start with, rather than hoping people will pull it out of you. Most people aren't nearly as persistent as I am.
Anyway, you finally mention that you're doing some type of interop between VB 6 code and .NET code. That should not be relevant in the case of the message box icons used. The VB 6 MsgBox function is 100% equivalent to the Win32 API MessageBox function and the .NET MessageBox class that I discussed earlier. All of them are going to use the current system icons, and it shouldn't require any extra work to make them look the same. Ensure that you've passed the same icon specifier to all of the functions. Here's a table for convenience:
VB 6 "MsgBox" Icon Constant | VB.NET "MessageBox" Icon Identifier
---------------------------------------------------------------------------------
vbCritical | MessageBoxIcon.Error
vbQuestion | MessageBoxIcon.Question (DEPRECATED -- do not use)
vbExclamation | MessageBoxIcon.Warning
vbInformation | MessageBoxIcon.Information
Note that the "Question" style icon has since been deprecated and you should not use this value. If you're still using it in the VB 6 code, you should change that code to use a different icon (or no icon at all). The above-linked Windows User Experience Interaction Guidelines provide more details on why this icon has been deprecated and how to choose a suitable replacement.

WinCheat / WinSpy-like tool for C++ Builder exes

I just came back to C++ Builder after 5 or more years away. I seem to remember a nice tool where I could drag its pointer over the GUI of my running application and get lots of info about what was pointed at - handle, size, text, parent, children, etc
IIRC, if the exe include debug info I could also get the actual variable name as used in the source.
Does anyone know what program I am talking about? Thanks
There are several options:
Winspector
This is the program I've used the most of these Spy++ like programs, it has all the features I needed and worked without complaints on my developer machine, it has been quite some time since I've used it though. And the official site seems to be down for some reason ( http://www.windows-spy.com/ ) but luckily you can get a version from softpedia: http://www.softpedia.com/get/Security/Security-Related/Winspector.shtml
WinSpy
I have used this program for debugging, and finding out which messages was sent to different windows, it worked quite well, and was a good alternative to Spy++, besides it is free. You can download it from here: http://www.catch22.net/software/winspy
SpyStudio by Nektra
I have never tried this program but it actuall seems to do what you asks, and it is free. It can be found here: http://www.nektra.com/products/spystudio-api-monitor/
(source: nektra.com)
WinID
From what I've heard WinID should be able to perform much of the same, but I have never tried the program myself. You can download it from here: http://www.dennisbabkin.com/php/download.php?what=WinID this program is not compatible with Windows Vista though (and probably not Windows 7 either).
The challenging option
If there is a bit of a pioneer in you, you might want to create your own utility, although this is most likely not what you want, but if so you can check out these codeproject pages:
http://www.codeproject.com/KB/graphics/screen_capturing.aspx
http://www.codeproject.com/KB/dialog/windowfinder.aspx
These are all a lot like the Spy++ program that came with Visual Studio. Last but not least you might find other programs in this thread: I want Spy++ but I don't have Visual Studio
A very decent effort to revive the beloved but defunct winspector is window detective : http://windowdetective.sourceforge.net/
What you describe in the question sounds like TestComplete. http://www.automatedqa.com/products/testcomplete
If you compile the application as an "open application"(you add a few .pas from TestComplete to the project) then it will use the debug information and you will be able to see private data members of the classes and their value.

which open source project is most like Google Notebook? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
As we knew, Google stopped the development of Google Notebook. Though lots of alternatives exist, no one satisfies me (see below for the reasons). Many suggest Google to open source it, but Google didn't response by so far. So I'd like to turn to open source world to develop one. In a nutshell, Google Notebook attracts me in the following ways:
Every notes of a certain notebook present in the form of "list" intuitively. Notes can be dragged to rearrange and organized into Sections, meanwhile notes and sections can be collapsed and expanded easily. To the best of my knowledge, no other note taking software or web service functions like that.
Need to begin a new note? Just move the mouse cursor to any "blank strip" between two notes and click--a new note will emerge there, waiting for your edition, or you can change it into Section freely. No need for the stupid "New Note" button or anything of the kind, and you can always make your new note in the exact place you want. That's the best part that Google Notebook offers, and that I'd like to seek for in the world of existed open source projects.
Well, these are the most valuable things I'd like to have in my new note taking software. Please tell me which open source projects I should learn for, whether web-based (e.g. PHP projects) or executable software (cross-platform is better) will be OK. Thanks very much.
Closest thing I've found was WorkFlowy. Dividing things into categories is not as straightforward (you need to create "subnotes"), but otherwise the interface and the features are similar (although I still prefer Google Notebook's).
Will give OneNote a try as well. If the OneNote webapp is any good, I might end up going in that direction.
the tomboy project guys are developing a django-based web client with and additional api for desktop-sync. it looks interesting. check it out:
http://live.gnome.org/Snowy
http://automorphic.blogspot.com/2009/05/tomboy-0151-release-brings-new-online.html
http://mindby.com/2009/05/tomboy-snowy-nirvana/
Well, there's Chandler. My first thought when I saw Google Notebook was that Chandler had better get its ass in gear...
I have been using Zim-Wiki for along time, really liked it. Will evaluate chandler. Actually we all read articles takes notes, and wish a smiple but powerful desktop wiki or notebook.
Zim-wiki doesnot start a page by clinking over a empty space, as its not ajax based. Anyways here's a set of tools i use to keep my notes.
Zim-Wiki, for something i read, and wish to add my perspective for late reference.
Bokmark, the links for later reference
BScrapBook feature in firefox, or scrapbook+ feature of firefox3.5
I have not found a one-solution product as of now. I hope someone provides a better integrated product.
Zim is extra-simple, usual keyboard shortcuts and intuitive layout , thus hardly any learning cure. It is cross platform, and i share my same common notebook across my windows and linux.
It's not open source, but Microsoft OneNote is pretty stellar in my opinion. It's pretty similar to Notebook(click to start a new note, tags, searching across all notebooks, etc..) and it's easy to move your notebooks around if you have OneNote installed on more than one machine. I've used a handful of others and none of them have been as intuitive and easy to use.
Not open source, but Evernote has an API. I haven't seen any other app with so many modes of getting notes to their system (cell phone with camera integration, web, desktop app). Everything can synchronize. If you have the desktop app installed, it has command-line capability.
There is a tagging system similar to Stackoverflow. All the different notebooks, drag-and-drop arrangements are in the desktop version.
I actually started using fishCode Library.Net and I really like it. I sync it to Live Mesh so database nodes are always in sync.
I just moved from Google Notebook to Google Documents. I essentially just use it as a log book creating an entry for each day with a few lines of details. Works fine for me so far.
I created a webapplication called jottinx to replace Google Notebook for me. It is not open source, but it is free to use. I looked at the alternatives, and frankly found none to be really to my liking. Honestly it still is very much a work in progress, so I do not yet have the drag/drop/collapsing notes, but I am working on that.
You can import your Google Notebook Atom xml files, and work from there again.
For the moment it is a simple clean application, and I use markdown to write your notes, which I personally prefer as I tend to keep also code snippets and scripts in my notes.
As this is still in progress, I am always keen to receive feedback ...

Important UI Features That Are Often Left Out [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I really want to know if I'm missing anything obvious in the software I'm developing.
What User Interface features that you consider important are often missing in most software?
Undo is bitchy to code, but very useful to the end users.
Save the location and size of all/any windows, so they are restored whenever the program is restarted.
Read this article on Undo from a usability expert (Aza Raskin): Never Use a Warning When you Mean Undo. Coding undo is not all that hard: examples [1], [1.5], [2].
These are some of the UI features that I often find are done badly, or are even missing:
Restoring window state properly.
Conforming to the average (non-beginner, non-expert) user's mental model.
Restricting the number of choices that the user has to make.
Restricting the amount that users have to read while using the app.
Strong consistency with other apps of the same genre running on the same platform.
A well-done Undo / Restore facility.
As somebody else remarked, context-sensitive help.
Allowing an app to be navigated without the aid of a mouse.
Good multi-monitor support.
keyboard Shortcuts
What's usually left out in UI's? Nothing! (literally. empty space). The question is better asked "What can be taken out?". When you have to think of what else your UI needs, you have already gone too far. Leaving out empty space is something UI programmers need to work on. Nobody likes feature creeping.
Remember the KISS rule.
A help menu with more than About...
Context sensitive help
Tool tips
An API and a scripting language so I can bypass the UI.
Seriously. Nothing is more tedious (and error-prone) than having to point-and-click through some repetitive process.
Right click context menu on things like tree views and grids.
We have an record management application here at work that I have to use now and then and they don't have right click on any of the documents in the treeview so you have to keep going to the bottom of the screen to mark a task as completed grrr, and no keyboard shortcuts too grrr
Consistency in your design... There are too many apps that "look" like a programmer wrote them. I can't stress enough!
Automation... Office has it, I wish more apps did.
CLI... As mentioned above, especially if it's a repetitive-wizard-type process
Templates/Presets... like Handbrake... make life easier, not to mention handy in the training process
Error/Confirm messages which don't get in the way... Unless the user needs to take immediate action, don't display a dialog. If the error is obvious, fix it for me and then tell me why
Scalable UI. With WPF this is getting easier, but it is annoying if I'm on a large monitor and I have to squint to see anything. Not to mention my click accuracy isn't that great.
UI Consistency.
I know I've been guilty of leaving out printing support in the past. I would never use it, but some of my users do.
drag and drop
clipboard
Good design.
Leave room in your dialogs so if you internationalize it, you have room for longer words (think Italian) and bigger fonts (think Chinese).
I'll add a few myself that have't been mentioned yet:
Non-modal forms that can remain open while other work is done.
Ability to view multi-windows at once (instead of tabs which show only one at a time)
Ability to have multiple views of a single window at once, i.e. split mode, or panes, or actual multiple windows into the same object.
Clean and intuitive.
Clean icons. Good icons. Meaningful icons.
I am very disappointed with a lot of icons inside applications — especially on Windows ;-)
actual consideration for the user seems to be left out quite frequently:
using terminology that makes sense to the programmer, but not the user
organizing the application's workflow for the convenience of the programmer, but not the user
not considering the user's work processes in the first place, and finding ways to help him/her eliminate steps and simplify things
Being able to use drag and drop to customise the toolbar and to be able to remove/hide unwanted toolbars without leaving an unused button whose only purpose is restore/unhide them.
Freezing the application when it's doing something that takes more than a second.
Not showing users what's happening, and not indicating how long it's going to take.
IMO, user name and password login options need work. I understand there are security concerns with each of these options. The risk-trade off is different for each application and needs to be assessed on an app by app basis.
Often forgotten or poorly implemented features include:
Remember Me
Forgot password
If you have a restrictive password policy, give me a hint as to what it is!
Range for # of characters, no special characters, required numbers or capitol letters, etc
Forgot username
If my username is not my email address, give me a hint to your username policy
Kind of too general a question. It would depend on what does the application do. One thing I see often missing from gui applications is an easy way undo mistakes and not only in the object you're manipulating but also on program UI elements. Closing some floating options panel or toolbar by mistake and then having no idea where is the thing enabled frustrates me to no end. Is it under Windows? Or under View? Was it this one? no that one is for something else entirely. Gah! what's it called?
Cycling through links and fields using the tab button.
Left click drag to highlight, right click for context menu with option to copy highlighted text. Found missing from some applications coded in Java.
Windows that snap to other windows and screenboarders. KDE and Winamp do this, and are the ones most famous for it. Why don't a whole host of other applications and DEs do this?

Windows-based Text Editors [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
Other than Notepad++, what text editor do you use to program in Windows?
Another vote for gvim (about, download). I think once you learn the keystrokes to control it, you won't want to use anything else.
Plus, there is the added benefit of being able to use it on just about any platform, including the nice Windows port.
Sublime Text is amazing.
GNU Emacs is my preferred text editor and it works well on Windows (copy/paste actually works as expected) It's also available on all major platforms so you can reuse your knowledge if you jump around OSes like I tend to do.
I really like JEdit as well. It's a good text editor for code and random text. It's a nice middle ground between Notepad and Eclipse.
If you want something just a step above Notepad for quick, efficient editing I would recommend Notepad2. It's really useful when you replace the standard Notepad with this version. You continue to have a fast startup but the syntax highlighting is a real boon. I replace Notepad with Notepad2 on every one of my Windows machines.
I use SciTE
I'm a massive fan of Notepad2 - it is so quick!
For quick simple editing of text for me it's close to perfect. It has syntax colouring for Xml and code and can be extended easily.
We use Dreamweaver and Visual Studio for larger coding efforts.
UltraEdit is my second home. It is a great general purpose text editor.
Textpad is what I would use for random text editing (checking out HTML source, quick hackery, scripts and the like).
For actual Java development it's Eclipse all the way, although people tell me the IDEA is the cat's pyjamas.
E-TextEditor
Is a bit buggy, but beats the pants off any other editors I've used due to it's using the Textmate bundle format (and the bundles) - also gets updated very regularly. I use it every day and would gladly purchase it again.
Note that I primarily work in C/C++. For C/C++ code, I use Visual C++ Express Edition or Visual Studio Professional. For the little bit of Python I'm learning, I use the editor in the PythonWin IDE. (Mostly because it does a bit of code completion.) For everything else, I use GViM.
Tip:
After you install ViM on Windows, if you right-click on any file in Explorer, you see the Edit with Vim option in the right-click menu. This is very useful for peeking into and editing every kind of text file without having to bother about specific editors. GViM can understand most formats and thus displays them with syntax coloring. Get used to doing this and soon GViM becomes your defacto generic text editor on Windows. (Even replacing Notepad.)
Thej already recommended it, but to elaborate:
SciTE - Free, has preset colouring for many languages, and it's multi-platform (Windows & Linux), and lightweight.
alt text http://scitedebug.luaforge.net/scite-debug.png
gvim. I also use Dreamweaver for web stuff.
Notepad2
Syntax highlighting for html,c#,javascript,css,xml,sql,python,bat
Rectangular selection, regular expressions
Indentation, back/foreground customization
Downside: No tabbed windows.
I'll echo the others who have endorsed Emacs. I program every day on, at a bare minimum, OS X, Windows, and Linux. Having the same IDE on all three systems gives me an enormous productivity boost. That said, the vanilla version of GNU Emacs...well, it sucks. I'd strongly encourage you to try EmacsW32 instead. In much the way that Aquamacs makes an OS X-friendly version of Emacs, the EmacsW32 project makes Emacs out-of-the-box work just like a Windows text editor. Mind you, all of Emacs' power (and complexity) is there, but if you don't already have muscle memory built up, there's no reason not to use Ctrl-C/X/V as copy/cut/paste instead of M-w/C-k/C-y just to be cool. EmacsW32 also brings Windows-compliant open/save dialogs, sane CRLF file handling, and quite a bit more. If you've ever had an itch to try Emacs, give it a shot. You won't regret it.
Not everybody uses Notepad++, it's not that good.
Crimson Editor
http://www.crimsoneditor.com/images/overview.gif
EditPlus is my editor of choice. All the features you'd need, and no more.
I know this is my own question but I came across this text editor Sublime Text and thought it was pretty sweet. There are a few features in it that i have never seen before. It has multiple line select ( lines that are not continuous ) and a birds eye view navigation. It's a little pricey but I am having fun playing with the free version.
I use EDIT.COM for a lot of things, believe it or not. Old habits die hard.
Commercial product (Windows): UltraEdit.
Freeware (Windows): Notepad++, PSPad.
Cross-Platform: JEdit. It's written in Java and runs on almost anything.
If you don't mind taking a performance hit under Windows, JEdit has some amazing capabilities. For native performance on that platform, I would go with one of the others. I tend to switch back and forth between Notepad++ and PSPad. Notepad++ probably edges it out for most tasks. It has section folding, which is very handy. However, you did ask about products other than that one.
I have used UltraEdit for years... If I'm working on a project I prefer to use a real IDE, but nothing beats it for quickly making changes to source files, or especially for those small PHP projects where you're just hacking away anyway. The killer feature for me is the compare functionality.
I personally like ConTEXT.
A lot of people gave their suggestions for favourite text editor here:
https://stackoverflow.com/questions/10238/text-editor-or-ide#10391
I strictly use jEdit.
My personal favorite is EditPad Pro. Not because it is superior in any way, but because it was the one I started to use.
UltraEdit it my favorite text editor. Too bad I have to pay for it. You can't beat the ability to highlight vertically vs. horizontally.
Textpad replaces notepad for me. I couldn't live without it. Some key features that I use with Textpad are:
Find in files (along with open all, replace all, save all, close all).
Block Select (along with copy/paste of a column).
Clip Library
Syntax highlighting
Ability to attach externals tools (compilers, etc.) and capture the output to a window.
I use Eclipse for Java, Visual Studio for C++, C#, and VB.NET, JellyFish Pro for PowerBasic, I still use Visual Studio 6 for Classic VB, and I use TextPad for perl, python, Powershell, vbscript, SQL, HTML, and batch files.
I hate to sound like a broken record, but Vim is my choice. It works the same way everywhere and you'd be hard pressed to find a more powerful editor.
I don't code much on Windows, but e text editor is my choice. As far as free editors go nothing beats Emacs.
Notepad2, apart from Notepad++
Visual Studio, notepad2, notepad++.
Visual Studio for .Net development. Currently working with VS2008, but seems to be not quite finished yet. 2005 is probably the most stable and complete. Anything else for that would seem quite futile for .Net development
I use e-TextEditor for most other things. It covers most of the topics above including syntax highlighting, multi-select/edit, column select, TextMate bundles for auto-complete.
As you can see, asking about a preferred editor will get you a lot of responses. For me: UltraEdit - robust:
Notepad++ - lightweight
Also tend to use the IDE that comes with various tools (e.g. VB, C#, etc.)
But, the best advice is to pick a decent editor and learn it thoroughly. You will be spending a whole lot of time using it. So, the better you know it, the more time it will save you in the long run.

Resources