ZeeGrid has many control messages. Many of them are very similar to others, the only difference being the cell attribute they act upon. As far as the attribute messages are concerned, there are three basic ones for each attribute. One is to GET the value of the attribute of a particular cell, another is to SET the value of the attribute of a particular cell, and the third is to SET the DEFAULT attribute value for any newly created cells. I consider these three attribute messages as "primitives".
Besides these three "primitive" messages, there are two more "convenience" messages for SETTING the attribute values of all cells in a ROW or COLUMN. The "convenience" messages are only provided as a convenience to the programmer. You, the programmer, could always set every attribute of every cell in a row or column by getting the number of rows and columns, then creating a loop, updating each cell as the loop iterates.
I thought it would be beneficial in the long run, to provide these convenience messages which operate "internal" to the grid, instead of having the programmer execute code for each cell in the iteration. Even though they might rarely be used, it's better to have them available and never need them, than to need them and not have them.
Likewise, there are a GREAT many other messages that you'd be hard pressed to ever find a need for. But to make ZeeGrid as flexible as possible, I decided again it's better to have them and not need them...
In my programming experience with ZeeGrid, I have found that there is normally only a handful of messages needed to configure a grid for basic data display. If you want the grid to be a data entry grid, you'll need a few more messages, plus knowledge of the notification messages. Be sure to read through the attribute section, because once you understand the attributes, nearly all of the messages will make sense.
There are a few messages that really have nothing to do with the grid directly. These are ZGM_GETCRC, ZGM_STOPWATCH_START, ZGM_STOPWATCH_STOP and most of the date messages. Since ZeeGrid is likely to be in most of my applications anyway, I thought it was a good place to add some common functions like these. That has worked well, and I may continue adding more messages that are very common, and can be included cleanly into ZeeGrid.
While developing ZeeGrid, I tried to keep in mind that the actual users of ZeeGrid, are the users of your application. So I had two groups of people to keep happy, the application developers, and the end-users of those applications. You'll notice a lot of messages are designed to turn on and off features, because if those features were not options, ZeeGrid would be severly limited by being hard-coded to have a particular look, or act a certain way all the time.
You'll also notice that a few of the messages do not have documentation pages. That's because these messages were just added recently, and writing documentation is a PAIN. As time goes on, I hope to get these documented and added here.
Lastly, I will be the first to state it... ZeeGrid is not perfect. It's not without bugs! I have a full-time job, so working on ZeeGrid is not my highest priority. I'll periodically dig into the code to attack known bugs, but it's not frequently. If you discover a bug and can communicate to me the steps to reproduce it, I will add it to my "fix list".
In closing, I have to say that I'm very satisfied with the way ZeeGrid has evolved since development began back in 2002. I'm also glad I took the Win32 SendMessage() approach for the programming interface. The only down-side to this has been; Why did I have to write it in the first place? Why doesn't Microsoft provide a nice Windows supported grid in their common controls package?
Over the past eight years, I've created several more "Zee" controls, but I'm not releasing those... yet. I want to see what the programming community response is to ZeeGrid before bringing those controls to the public. And just to face reality, at some point these "Zee" controls are going to have to bring in enough money to at least pay for this website, and I have no idea how to do that, especially when I'm giving away the product. Obviously, my degree is in Computer Science, not Economics. Maybe Microsoft or Google will offer to buy my source code. Yeah, That's the Ticket!