gpt4 book ai didi

c++ - 选项卡控件上的列表控件 SetFocus 重绘错误

转载 作者:行者123 更新时间:2023-11-28 03:59:37 26 4
gpt4 key购买 nike

环境:Visual Studio 2008、Visual Studio Feature Pack、MFC Dialog App、Windows XP、新的公共(public)控件。

我在使用恰好位于选项卡控件上的列表控件时遇到问题。

要重现该问题,只需创建一个基于对话框的应用即可。在该对话框上放置一个选项卡控件,然后在该选项卡控件上放置一个列表控件。您不需要向项目添加任何代码。只需构建并运行。将焦点设置到 ListView ,然后最小化对话框或将另一个窗口置于其前面。

现在将对话框带回前台,列表将无法正确绘制。

我尝试过的一件事是处理列表控件的设置焦点事件,但留下一个空的方法主体,即...

void CMyListControl::OnSetFocus(CWnd* window)
{
// Default();
}

然后重绘问题就消失了,但是现在您不能选择列表中的项目。取消对 Default 调用的注释会使问题再次出现。

如果我将列表移出选项卡,问题就会消失。如果我将焦点设置到选项卡或对话框上的另一个控件,问题就会消失。这很奇怪。

事实上,如果您仔细观察,您会看到列表绘制本身然后被选项卡控件遮挡。

最佳答案

我知道已经晚了,但我今天遇到了同样的问题。您需要将 ListView 的父级设置为 Tab 控件。

hWndTab = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TABCONTROL, NULL,
WS_CHILD | WS_TABSTOP | WS_VISIBLE,
0, 0, 0, 0, hWnd, (HMENU) IDC_TAB, hInstance, NULL);

hWndList = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, NULL,
WS_CHILD | WS_TABSTOP | WS_VISIBLE | LVS_REPORT,
0, 0, 0, 0, hWndTab, (HMENU) IDC_LIST, hInstance, NULL);

请注意 hWndList 的父窗口处理程序:hWndTab。或者您可以使用 SetParent。

关于c++ - 选项卡控件上的列表控件 SetFocus 重绘错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1527372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com