是为ListBox(WC_ListView)自动绘制的焦点矩形

Is focus rect drawn automatically for listbox (WC_LISTVIEW)?

本文关键字:绘制 焦点 ListBox WC ListView 是为      更新时间:2023-10-16

我创建了一个与此处提供的代码相似的列表框。在我的UI中,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);
}

通常,默认窗口过程绘制了所有者对WM_DRAWITEM消息绘制的列表框项目的焦点矩形。

在msdn

对于一个空列表框或组合框,itemID可以为-1。这允许 仅在坐标处绘制焦点矩形的应用 即使rcItem成员指定 控制。这向用户指示列表框还是组合框 有重点。itemAction成员中的位置如何设置 确定是否要绘制矩形,好像列表框一样 或组合盒有重点。

如果您不使用所有者/自定义绘图,那么所有Windows Common控件都会自动为您绘制焦点矩形。

Windows 2000(及以后(隐藏键盘加速器和默认矩形,除非您使用键盘与窗口进行交互。

Windows启用应用程序可以在其UI中隐藏或显示各种功能。这些设置称为UI状态。UI状态包括以下设置:

  • 焦点指标(例如焦点矩形在按钮上(
  • 键盘加速器(由控制标签中的下划线指示(