Ok... the WS_TABSTOP is to be added to each control you want to tab to... It's a style, not a message.
Here's an example in a .rc file (used for dialog boxes)...
Code:
CONTROL "", 4000, "Static", SS_CENTER|SS_CENTERIMAGE, 54, 13, 93, 12, WS_EX_STATICEDGE
CONTROL "2100", 4001, "Edit", ES_CENTER|ES_NUMBER|WS_BORDER|WS_TABSTOP, 54, 29, 28, 12, WS_EX_CLIENTEDGE
CONTROL "", 4002, "Edit", ES_AUTOHSCROLL|ES_PASSWORD|WS_BORDER|WS_TABSTOP, 54, 45, 93, 12, WS_EX_CLIENTEDGE
CONTROL "10", 4003, "Edit", ES_CENTER|ES_NUMBER|WS_BORDER|WS_TABSTOP, 54, 79, 28, 12
CONTROL "30", 4004, "Edit", ES_CENTER|ES_NUMBER|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 54, 95, 28, 12
CONTROL "5", 4005, "Edit", ES_CENTER|ES_NUMBER|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 54, 111, 28, 12
CONTROL "1000", 4006, "Edit", ES_CENTER|ES_NUMBER|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 54, 127, 28, 12
CONTROL "Disable Add Files mode", 4008, "Button", BS_AUTOCHECKBOX|WS_TABSTOP, 173, 14, 117, 16
CONTROL "Allow only 1 remote per program", 4009, "Button", BS_AUTOCHECKBOX|WS_TABSTOP, 173, 34, 117, 16
CONTROL "Disable End Program command", 4010, "Button", BS_AUTOCHECKBOX|WS_TABSTOP, 173, 54, 117, 16
Notice how WS_TABSTOP is used with every control...
Now with direct window creation...
Code:
Wind[1] = CreateWindowEx(WS_EX_CLIENTEDGE,L"STATIC",L"Menu",
WS_CHILD | WS_VISIBLE |
SS_CENTER | SS_CENTERIMAGE | SS_NOTIFY,
1,1,300,20,Wind[0],(HMENU) 100,PgmInst,NULL);
MsgWind = Wind[1];
// upper toolbar
Wind[2] = CreateWindow(TOOLBARCLASSNAME,NULL,
WS_CHILD | WS_VISIBLE | WS_TABSTOP |
TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |
TBSTYLE_TOOLTIPS | TBSTYLE_LIST |
CCS_NODIVIDER |CCS_NOPARENTALIGN | CCS_NORESIZE,
10,60,300,35,Wind[0],(HMENU)101,PgmInst,NULL);
// lower toolbar
Wind[3] = CreateWindow(TOOLBARCLASSNAME,NULL,
WS_CHILD | WS_VISIBLE | WS_TABSTOP |
TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |
TBSTYLE_TOOLTIPS | TBSTYLE_LIST |
CCS_NODIVIDER |CCS_NOPARENTALIGN | CCS_NORESIZE,
10,95,300,35,Wind[0],(HMENU)102,PgmInst,NULL);
Again, notice how WS_TABSTOP is used with each of the child windows.
When your dispatcher loop (or the dialog's one) calls IsDialogMessage, it will look first for tabs from the keyboard, search the child windows for the next one with the WS_TABSTOP style and move input focus to that control.