I created a tabbed window in a modeless dialog procedure (I pinned the tabbed window to the dialog box) and in the TCN_SELCHANGE switch I returned TRUE to it, and everything works splendidly.
I created another tabbed window in another application, but instead of putting it in a dialog procedure I merely pinned it to the main app window, which is a dialog, and thus I created the tabbed window in the WM_CREATE switch in the winproc.
However, it would not let me select or switch tabs. My intuition immediately directed me to change the return value to FALSE instead of TRUE in the TCN_SELCHANGE switch, and voila! Everything works fine.
So in other words, I returned TRUE in the dialog box procedure and FALSE in the main window procedure.
I'm assuming this is because the return value in the WM_INITDIALOG is (INT_PTR)TRUE and in the winproc it's DefWindowProc(), and returning FALSE is the proper way to return values in the winproc procedure, such as from the WM_COMMAND switch and so forth.
Can anyone explain why the TRUE value froze my tabs until I changed the return to FALSE? Is it because returning a value interferes with DefWindowProc()?