【发布时间】:2015-06-22 11:55:37
【问题描述】:
我在创建 Listview 时注意到一个奇怪的效果。
当我创建 ListView 而不创建 Button 时,ListView 中的选定项目有一个虚线边框。但是,当我还创建一个 Button 时,ListView 所选项目不再有虚线边框。只有当我有一个启用通用控件的清单文件时才会发生这种情况 6:
这是我用来创建 Window 和 ListView 和 Button 的代码:
// Create Window
HWND hWnd = CreateWindowEx(0, "WinClass", "My Window", WS_OVERLAPPEDWINDOW, 261, 172, 394, 284, NULL, NULL, hInstance, NULL);
// Create ListView
HWND hListView = CreateWindowEx(0, WC_LISTVIEW, "", WS_CHILD | LVS_REPORT | WS_VISIBLE, 0, 0, 232, 190, hWnd, 0, GetModuleHandle(NULL), NULL);
// Create Button
HWND hButtonRefresh = CreateWindowEx(NULL, "BUTTON", "OK", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 10, 200, 110, 25, hWnd, NULL, GetModuleHandle(NULL), NULL);
注意:我对这个效果没有问题,我只是想了解为什么会这样!
【问题讨论】:
-
“虚线边框”表示列表视图具有输入焦点。默认情况下,最后创建的控件可能会获得输入焦点,这意味着当您有一个按钮时,它拥有它而不是列表视图。
-
^ 这个。可以看出,OK 带有蓝色边框。
-
@Jonathan Potter 但是在两张图片中,我都点击了 ListView 项目,所以 ListView 有焦点,而不是 Button。
-
现在,焦点矩形在 Windows 中默认隐藏,直到您实际使用键盘。您可以使用
WM_CHANGEUISTATE消息来更改此设置。