gpt4 book ai didi

c - 隐藏/显示选项卡控件 Win32 的子窗口

转载 作者:行者123 更新时间:2023-11-30 15:10:26 24 4
gpt4 key购买 nike

需要明确的是,我在 win32 中编码,而不是使用 MFC、wxWidgets 或 .net。

我的问题是我有一个带有 2 个选项卡的选项卡控件。出于调试目的,每个选项卡都有一个 STATIC window 。初始化时,运行以下代码:

 createTabControl();
CreateStaticViewTab1();
CreateStaticViewTab1();
ShowWindow(Task1Tab, SW_SHOW);

哪里

void createTabControl(){
TCITEM tie = { 0 };
hWndInputTab = CreateWindow(WC_TABCONTROL, L"Input", WS_VISIBLE | WS_CHILD , 10, 40, 300, 650, hWnd, (HMENU)TAB_INPUT, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
SetDefaultFont(hWndInputTab);

tie.mask = TCIF_TEXT;

TCHAR pszTab1[] = L"TAB 1";
tie.pszText = pszTab1;
TabCtrl_InsertItem(hWndInputTab, 0, &tie)

TCHAR pszTab2[] = L"TAB 2";
tie.pszText = pszTab2;
TabCtrl_InsertItem(hWndInputTab, 1, &tie)
}

void CreateStaticViewTab1(){

Task1Tab = CreateWindowEx(0,L"STATIC",L"Static Control on Tab1",WS_CHILD | WS_BORDER | SS_CENTER | SS_CENTERIMAGE, 75, 75, 200, 60, hWndInputTab,NULL, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),NULL);

SetDefaultFont(Task1Tab);
}

void CreateStaticViewTab2(){

Task1Tab = CreateWindowEx(0,L"STATIC",L"Static Control on Tab2",WS_CHILD | WS_BORDER | SS_CENTER | SS_CENTERIMAGE, 75, 75, 200, 60, hWndInputTab,NULL, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),NULL);

SetDefaultFont(Task2Tab);
}

WndProc ,我正在处理 WM_NOTIFY信息。我已经检查并可以确认它正确执行,调用适当的函数( ShowTab1()ShowTab2() )。

这两个函数旨在在选择更改时显示和隐藏相应的选项卡。他们通过以下方式做到这一点:

void ShowTab1(){
ShowWindow(Task2Tab, SW_HIDE);
ShowWindow(Task1Tab, SW_SHOW);
}

void ShowTab2(){
ShowWindow(Task1Tab, SW_HIDE);
ShowWindow(Task2Tab, SW_SHOW);
}

据我了解,这些应该根据需要隐藏和显示正确的选项卡。

我的问题是,加载程序时,会显示正确的选项卡 (1)。单击选项卡 2 时,选项卡 1 ( Task1Tab ) 的内容会正确隐藏,但选项卡 2 ( Task2Tab ) 的内容不会正确显示。返回选项卡 1 时,Task1Tab已正确显示。

我无法确定为什么这两段代码之间存在差异,因为它们实际上是相同的。

注意:我已经测试了没有 ShowWindow(Task1Tab, SW_SHOW) 的代码在初始化中,这会创建没有任何内容的选项卡,并且当单击选项卡 2 时,不会显示任何内容,但是,当单击选项卡 1 时, Task1Tab已正确显示。

最佳答案

您似乎遇到了一些常规复制/粘贴错误。您调用 CreateStaticViewTab1 两次,但从未调用 CreateStaticViewTab2CreateStaticViewTab1CreateStaticViewTab2 都分配给 Task1Tab。这些错误可以解释您观察到的行为。

如果您的代码执行了任何错误检查,那么就会导致您遇到问题。检查错误会发现 ShowWindow(Task2Tab, ...) 由于窗口句柄无效而失败。因此,除了更加小心地使用剪贴板之外,另一个重要的教训是,在调用 Windows API 函数时应该始终检查错误。

关于c - 隐藏/显示选项卡控件 Win32 的子窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36151862/

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