As I'm (finally) learning to code Windows apps in C++ I stumbled upon this: I have a dialog box which I create with CreateDialog()
and I also have a default button. However, each time I press TAB
or ENTER
, nothing happens, nor does the control focus change, nor does the default button activate. Here's the resource for my dialog.
IDD_MAINWIND DIALOG 0, 0, 312, 205
STYLE DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_GROUP | WS_POPUP | WS_SYSMENU
EXSTYLE WS_EX_WINDOWEDGE
CAPTION "Dialog"
FONT 8, "Tahoma"
{
PUSHBUTTON "&Send", IDC_BUTTON_SEND , 280, 168, 22, 14, BS_DEFPUSHBUTTON
LTEXT "Hello", IDC_STATIC1, 9, 9, 296, 149, SS_LEFT | SS_NOPREFIX | SS_SUNKEN, WS_EX_TRANSPARENT
EDITTEXT IDC_MESSAGE, 9, 168, 265, 13, ES_AUTOHSCROLL
PUSHBUTTON "Tools", IDC_BUTTON_TOOLS, 8, 185, 146, 14
PUSHBUTTON "Exit", IDC_BUTTON_EXIT, 163, 185, 136, 14
}
Any help is greatly appreciated. Especially now on the 3rd day of Christmas.
The solution is to add
WS_TABSTOP
styles to every child element of the dialog box.For ex.:
Be sure that every control has
WS_VISIBLE | WS_CHILD
styles. Also do not forget to addWS_EX_CONTROLPARENT
style to the window and removeWS_GROUP
style from the dialog window.Moreover
Check your dialog proc
Or if you use window proc instead use the following snippet
Tabbing is provided by the dialog manager, not the Window manager. Therefore, to get tab handling, you need to call
IsDialogMessage
in your message loop with the hwnd of your window:Please, learn about WS_TABSTOP and WS_GROUP dialog box items attributes.
This link should be helpful for you: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644994.aspx#controls