This time with more fixes and tests. Experimenting with tab control I found this differences between MSDN and actual implementation: - TCS_OWNERDRAWFIXED style has nothing to do with fixed with tabs. It should me named TCS_OWNERDRAW instead. Unless there is some apps that think otherwise, this should work (tested on eMule and test program). In other words, this quote from MSDN is not true: "Because all tabs in an owner-drawn tab control are the same size..." - It looks like there is not such thing as not set tab width. According to this: "To give all tabs the same width, you can specify the TCS_FIXEDWIDTH style. The control sizes all the tabs to fit the widest label, or you can assign a specific width and height by using the TCM_SETITEMSIZE message." one can assume that if tab width is not explicitly set with TCM_SETITEMSIZE message "The control sizes all the tabs to fit the widest label". Not true. Native uses default tab size of 96. - The minimum size of a tab is at least icon width + 4 if icon is present. - Prior observation that "under Windows, there seems to be a minimum width of 2x the height for button style tabs" is not true. Vitaliy Margolen changelog: - Fix tab size for TCS_OWNERDRAWFIXED style - Correct size recalculation after setting tab width - Fix button sizes to match native. - Center both vertically and horizontally tab text & icon - Use correct left/center alignment flags to-do (currently working on): - Correct text & icon position within each tab/button to match native - Fix hot-track - Correct tab sizes for vertical styles