当我创建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);
注意:我没有遇到这种效果的问题,我只是想了解它为什么会发生!
答案 0 :(得分:1)
这只是因为按钮具有焦点而列表视图丢失了,单击列表视图并重新出现点。
答案 1 :(得分:0)
我相信虚线边框表示默认控件。在第二个屏幕截图中,转到按钮的属性并将默认按钮设置为false,然后您应该看到文本周围的虚线边框,如第一个屏幕截图所示。
要执行此操作,请在“资源”视图中打开对话框,选择按钮,然后从右键鼠标菜单中选择“属性”。在“属性”窗口中,您应该在“行为”部分中看到“默认按钮” - 只需将其更改为“False”。
或者在代码中尝试这样的事情: -
DWORD style = m_BtnOk.GetStyle();
// remove default push button style
style &= ~BS_DEFPUSHBUTTON;
// set the style
::SendMessage(m_BtnClose.GetSafeHwnd(), BM_SETSTYLE, (WPARAM)style, (LPARAM)TRUE);
答案 2 :(得分:0)