如何使用tab控件传递参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用tab控件传递参数相关的知识,希望对你有一定的参考价值。

将Tab控件放在窗口上,在窗口类中添加这两个页的变量,将其中的一个设置为另一个的窗口句柄,通过消息机制就可以传递任何信息了 或者直接让这个窗口做为中介也能够实现你的要求 参考技术A 将Tab控件放在窗口上,在窗口类中添加这两个页的变量,将其中的一个设置为另一个的窗口句柄,通过消息机制就可以传递任何信息了 或者直接让这个窗口做为中介也能够实现你的要求

如何在 Tab 控件中显示子对话框?

【中文标题】如何在 Tab 控件中显示子对话框?【英文标题】:How to show child dialog inside Tab control? 【发布时间】:2012-12-08 08:55:24 【问题描述】:

WM_INITDIALOG 和 WM_NOTIFY 代码段。

HWND hTabCtrl = nullptr;
HWND hCurrentTab = nullptr;
HWND hTab1 = nullptr;

LRESULT CALLBACK WINPROC(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
   


    hTabCtrl = GetDlgItem(hWnd, IDC_TAB1);

    g_hWnd = hWnd;
    ShowWindow(hTab1, SW_SHOW);
    switch(uMsg)
    
        case WM_INITDIALOG:
            
                //hInstance = 0; // Useless? 
                INITCOMMONCONTROLSEX ix;
                ix.dwSize = sizeof(INITCOMMONCONTROLSEX);
                ix.dwICC = ICC_TAB_CLASSES|ICC_UPDOWN_CLASS;
                InitCommonControlsEx(&ix);

                //ShowWindow(hTabCtrl, SW_SHOW);
                TCITEM ti;
                memset(&ti, 0, sizeof(ti));
                ti.mask = TCIF_TEXT; 
                ti.pszText = L"Basic Options";
                ti.cchTextMax = 255;
                TabCtrl_InsertItem(hTabCtrl,0,&ti); // 

                ti.pszText = L"Antis";
                TabCtrl_InsertItem(hTabCtrl,1,&ti);

                TabCtrl_SetCurSel(hTabCtrl,0);
                hTab1 = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DLG2), /*handle of the tab control*/ hTabCtrl, (DLGPROC)GeneralDlgPrc);

                break;
            

        // Macro so you don't need the crazy styled cast.
        case WM_NOTIFY: 
            
                switch( ( ( LPNMHDR ) lParam) -> code ) 
                
                case TCN_SELCHANGE: 
                    
                        if( TabCtrl_GetCurSel( ( ( LPNMHDR ) lParam) -> hwndFrom ) == 0 ) 
                        
                            ShowWindow( hTab1, SW_SHOW );

                         
                        else 
                        

                        

                        break;
                    
                
            

我试过这样,它没有出现。它覆盖了选项卡边框之一,因此它应该存在,但它在表单控件上不可见。

截图如下:http://puu.sh/1yt1b

编辑:可以,但是位置不对,我应该手动设置位置吗?

【问题讨论】:

Add Controls To Specific Tab Page in TabControl in C++ Win32的可能重复 查看这个答案,它提供了在选项卡控件中使用对话框的详尽示例。 ***.com/a/53108864/1466970 【参考方案1】:

我只需要使用 SetWindowPos() 来设置我的无模式对话框的当前位置。

【讨论】:

【参考方案2】:

您应该在资源文件中定义控件的初始 x/y 偏移量,而不是使用会让您付出运行时成本的 SetWindowPos。您使用的资源编辑器应该允许这样做。

【讨论】:

以上是关于如何使用tab控件传递参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Robot Framework 测试用例的命令行参数中传递 Tab?

如何给用户控件传递参数

如何将控件添加到 Tab 控件

VC TAB控件子对话框如何使用主对话框的成员函数.

使用 Kendo MVC 上传控件将 Javascript/html 变量作为参数传递

WPF MVVM Lights - 具有不同参数的相同用户控件