Прямоугольник фокуса рисуется автоматически для списка (WC_LISTVIEW)? - PullRequest
0 голосов
/ 17 мая 2019

Я создал список, аналогичный приведенному коду здесь . В моем пользовательском интерфейсе будет ли функция рисования прямоугольника фокуса с помощью DefWindowProc () или мне нужно позаботиться об этом? Я не вижу прямоугольник фокуса, нарисованный на фокусе вкладки.

Спасибо.

HWND CreateListView (HWND hwndParent) 
{
INITCOMMONCONTROLSEX icex;           // Structure for control initialization.
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);

RECT rcClient;                       // The parent window's client area.

GetClientRect (hwndParent, &rcClient); 

// Create the list-view window in report view with label editing enabled.
HWND hWndListView = CreateWindow(WC_LISTVIEW, 
                                 L"",
                                 WS_CHILD | WS_VISIBLE | LVS_LIST,
                                 0, 0,
                                 rcClient.right - rcClient.left,
                                 rcClient.bottom - rcClient.top,
                                 hwndParent,
                                 (HMENU)IDM_CODE_SAMPLES,
                                 g_hInst,
                                 NULL); 

return (hWndListView);
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Если вы не используете владелец / пользовательское рисование, то все общие элементы управления Windows будут рисовать прямоугольник фокуса автоматически.

Windows 2000 (и более поздние версии) по умолчанию скрывают ускорители клавиатуры и прямоугольники фокуса, если вы не взаимодействуете.с окном с помощью клавиатуры.

Windows позволяет приложениям скрывать или отображать различные функции в своем пользовательском интерфейсе.Эти настройки известны как состояние пользовательского интерфейса .Состояние пользовательского интерфейса включает в себя следующие настройки:

  • индикаторы фокусировки (например, прямоугольники фокусировки на кнопках)
  • клавиатурные ускорители (обозначены подчеркиванием на ярлыках элементов управления)
0 голосов
/ 17 мая 2019

Обычно оконная процедура по умолчанию рисует прямоугольник фокуса для элемента списка, нарисованного владельцем в ответ на сообщение WM_DRAWITEM.

В MSDN

Для пустого списка или поля со списком, itemID может быть -1. Это позволяет приложение для рисования только прямоугольника фокуса по координатам указывается членом rcItem, хотя в контроль. Это указывает пользователю, является ли список или поле со списком имеет фокус. Как биты устанавливаются в элементе itemAction определяет, должен ли прямоугольник быть нарисован, как будто окно списка или поле со списком имеет фокус.

...