t_bar

Describes layout of the columns in the table and properties of its optional bar.

typedef struct t_bar {                 // Descriptor of columns in table window
  // These variables must be filled before table window is created.
  int            nbar;                 // Number of columns
  int            visible;              // Bar visible
  wchar_t        *name[NBAR];          // Column names (may be NULL)
  wchar_t        *expl[NBAR];          // Explanations of columns
  int            mode[NBAR];           // Combination of bits BAR_xxx
  int            defdx[NBAR];          // Default widths of columns, chars
  // These variables are initialized by window creation function.
  int            dx[NBAR];             // Actual widths of columns, pixels
  int            captured;             // One of CAPT_xxx
  int            active;               // Info about where mouse was captured
  int            scrollvx;             // X scrolling speed
  int            scrollvy;             // Y scrolling speed
  int            prevx;                // Previous X mouse coordinate
  int            prevy;                // Previous Y mouse coordinate
} t_bar;


Members:

nbar
Number of the columns displayed in the table, 1..NBAR
visible
Whether the bar is hidden (visible=0) or displayed on the top of the table
name
Array of pointers to the names of the columns. If dollar sign ('$') is present in the name, it will be replaced by the space in the bar and interpreted as end-of-text marker in the Sort by menu. For example, the name of the Size column in the Modules window is "Size$    (Decimal)".  The column is titled "Size     (Decimal)",  and sort menu item is "Size"
expl
Array of pointers to the help texts displayed in the tooltip when user moves mouse pointer over the corresponding bar segment
mode
A combination of flags BAR_xxx that determine properties of bar segment and column. First group of flags specifies what happens when bar segment is pressed, select only one:

BAR_FLAT (default) Segment is flat and can't be pressed
BAR_BUTTON Segment is a button. When pressed and released, it sends WM_USER_BAR to the table function
BAR_SORT Segment is a button. When pressed and released, it sorts data according to the index of the bar segment. See SORTFUNC for details

Flags in the second group can be freely conbined:

BAR_DISABLED When set, disables bar segment
BAR_NORESIZE Specifies that column is not resizable and always has width defdx[]
BAR_SHIFTSEL Shifts background 1/2 character to the left for all characters displayed in the column. Used in hexadecimal dumps and Registers window to make selection better visible
BAR_WIDEFONT Doubles the width of character cells in the column. Used in UNICODE dump to avoid truncation of Kanji, Chinese and Hangul ideographs
BAR_SEP Tells OllyDbg to intreprete vertical bars ('|') as separators. For example, hexadecimal dumps place separators after each fourth byte
BAR_ARROWS Adds left arrow (currently this is a combination '<<') at the right side of the segment if this segment is shifted to the left. Used in Registers window

The last group gives hints to the speech engine, select only one:

BAR_SPSTD (default) Default speech mode. OllyDbg makes some translations, like '/' → 'slash'
BAR_SPASM Disassembler-oriented speech mode, some mnemonics and operands will be substituted. For example, INC will be read as INCREMENT
BAR_SPEXPR Expression-oriented speech, similar to BAR_SPSTD, but some translation are different, like '>' → 'greater than'
BAR_SPEXACT Text will be passed to speech engine "as is"
BAR_SPELL Column contains sequence of characters, spell symbol by symbol
BAR_SPHEX Column contains hexadecimal data, spell symbol by symbol
BAR_SPNONE Column is excluded from speech
defdx
Array of default column widths in characters. For tables of type TABLE_PROPWID, width of each column is proportional to the corresponding defdx[].

The remaining parameters are used internally by the OllyDbg, don't change them!


Example:

See here.


See also:
Table, t_table, Defaultbar()