Ws_tabstop

  • Автор темы 17dufa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
1

17dufa

#1
Здравтвуйте,
такая проблема: нужо сделать переключение между элементами управления (эдиты, кнопочки) по нажатию TAB и/или стрелок используя WinApi. Делаю так:
Код:
  hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPED   | 
              WS_CAPTION    | 
              WS_SYSMENU    | 
              WS_THICKFRAME   | 
              WS_MINIMIZEBOX  | 
              WS_MAXIMIZEBOX ,
  CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

Button_CH = CreateWindowEx(WS_EX_CLIENTEDGE, L"button", L"Change", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_USERBUTTON,
           230, 80, 80, 20, hWnd, (HMENU)IDC_BUTTON_CH, hInstance, NULL);

 Button_CH_OK = CreateWindowEx(WS_EX_CLIENTEDGE, L"button", L"Change OK", WS_CHILD | WS_VISIBLE | WS_TABSTOP |BS_USERBUTTON,
           230, 110, 80, 20, hWnd, (HMENU)IDC_BUTTON_CH_OK, hInstance, NULL);

 Edit = CreateWindowEx(WS_EX_CLIENTEDGE, L"edit", L"", WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL,
           90, 360, 130, 20, hWnd, (HMENU)IDC_EDIT, hInstance, NULL);
а переключаться окошки не хотят, причем если делаю первое как WS_GROUP, а с остальных снимаю WS_TABSTOP стрелочки работать тоже не хотят. Может что не правильно делаю в оконной процедуре (то есть в ней я вообще ничего не делаю для переключения окошек)?
 

Kmet

Java Team
25.05.2006
1 036
8
#2
WS_TABSTOP
MSDN "You can turn on this style on or off to change dialog box navigation"

Аналогичная приписка мелким шрифтом и для WS_GROUP

Так что придется или ручками переключать или делать диалоговое окно, хотя наверное можно с бубном поплясать вызвая DefDlgProc перед\вместо DefWindowProc, но то что из этого получиться путное не гарантирую
 
M

Maxx

#3
в цикле обработки сообщения добавить вызов функции IsDialogMessage, которая отвечает за стрелки и TAB

Код:
while ((GetMessage(&msg, 0, 0, 0))
{
// hwnd - дескриптор главного окна
if (!IsDialogMessage(hwnd))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
 
Статус
Закрыто для дальнейших ответов.