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.