我用GetClientRect,得到的窗口的客户区大小
然后再
CreateWindowEx,WS_EX_APPWINDOW,WC_TABCONTROL,"",WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,0,0,l_stRECT.right,l_stRECT.bottom,_hWnd,0,hInstance,0
创建了TAB控件.
请问我如何把这个控件显示出来?用ShowWindow函数显示?可是我用这个函数却显示不出来.

解决方案 »

  1.   

    错误代码时1407
    我想问一下,TAB控件创建时使用的类名是什么?不是"WC_TABCONTROL"吗?为啥帮助里是这个?
      

  2.   

    可为什么有的地方在createwindow的类名参数这里写成WC_TABCONTROL?
      

  3.   

    以下代码在VC里肯定能显示。已测试。
    BOOL CDlgTestDlg::OnInitDialog()
    {
    __super::OnInitDialog(); RECT rcTab={0,0,100,100  };
    HWND hWnd= CreateWindowEx( WS_EX_APPWINDOW,WC_TABCONTROL,"",
    WS_CHILD | WS_VISIBLE |  WS_CLIPSIBLINGS,rcTab.left,rcTab.top,rcTab.right,rcTab.bottom,
    m_hWnd,0,theApp.m_hInstance,0 );
    ::ShowWindow( hWnd,SW_SHOW);
    }
      

  4.   

    比如Tab控件变量的名字是m_Tab.则调用
    m_Tab.Invalidate();
    m_Tab.ShowWindow(SW_SHOW);
      

  5.   

    回家后,我看了下VC的头文件,发现
    #ifdef _WIN32#define WC_TABCONTROLA          "SysTabControl32"
    #define WC_TABCONTROLW          L"SysTabControl32"#ifdef UNICODE
    #define  WC_TABCONTROL          WC_TABCONTROLW
    #else
    #define  WC_TABCONTROL          WC_TABCONTROLA
    #endif#else
    #define WC_TABCONTROL           "SysTabControl"
    #endif
    这几句
    我是用汇编写的,所以我在汇编的头文件里始终没找到WC_TABCONTROL。
    难怪用GetLastError看错误回返回1407
    我把CreateWindowEx里那个类型写成SysTabControl32了,创建成功了,可是还是显示不出来。
    谢谢楼上两位的帮助。
    希望再帮我看看我哪里有不对的地方,如果有什么地方还不清楚,告诉我。谢谢。
      

  6.   

    我还想问一下,
    第三行#define WC_TABCONTROLW          L"SysTabControl32"中,那个“L”是什么作用啊?
      

  7.   

    为了适应UNICODE编程的,加了L表示,如果定义了UNICODE则SysTabControl32就解释为UNICODE
    字符,更详细的解释可以见《WINDOWS程序设计》
      

  8.   

    可是为什么我把类写成“SysTabControl32”后,还是显示不出来呢?
      

  9.   

    l_stRECT的值是否正确?另外可以用::SetWindowPos移动到前面和指定位置(防止被其他控件盖住),然后再ShowWindow显示出来。
      

  10.   

    我看了下
    1:l_stRECT的结果正确
    2:在我的窗口里除了TAB控件,没有其他任何控件
    3:我在CreateWindowEx里的扩展窗口风格参数中写了WS_EX_TOPMOST
    最后的结果还是没有显示出来:(
      

  11.   

    刚创建出来的Tab就是一普通窗口,是没有Tab(3d显示)的。要在你InsertItem后才会看起来真像一tab的。
      

  12.   

    谢谢lyg_zy的提醒,我确实是把ShowWindow放在了InsertItem之前了,现在把它放在后面就能显示了。谢谢!