选项卡对话框控件的子项覆盖选项卡本身

时间:2013-05-15 02:23:28

标签: c++ winapi win32gui common-controls common-dialog

我以WM_INITDIALOG这样创建了一个标签控件:

 INITCOMMONCONTROLSEX icex = {0};
 icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
 icex.dwICC = ICC_TAB_CLASSES;
 InitCommonControlsEx(&icex); 
 TCITEM tie;
 LPSTR text = "my tab";
 tie.mask = TCIF_TEXT|TCIF_IMAGE;
 tie.iImage = -1;
 tie.pszText = text;
 hTab = CreateWindow(WC_TABCONTROL, "", WS_CHILD |WS_CLIPSIBLINGS| WS_VISIBLE,
        0,0, 400, 350, hWnd,NULL, g_hInstance, NULL);
 TabCtrl_InsertItem(hTab,0,&tie);
 TabCtrl_InsertItem(hTab,1,&tie);
 TabCtrl_InsertItem(hTab,2,&tie);

我还在这里创建了两个对话框,在每个标签中显示为标签的内容。我用工具箱选择formview对话框创建它们:

hwndTabcontentDialog1  = CreateDialogParam( GetModuleHandle( NULL ),
            MAKEINTRESOURCE( IDD_FORMVIEW1 ), hTab, (DLGPROC)Proc1,lParam );
hwndTabcontentDialog2  = CreateDialogParam( GetModuleHandle( NULL ),
        MAKEINTRESOURCE( IDD_FORMVIEW ), hTab, (DLGPROC)Proc2,lParam );

现在在WM_NOTIFY我点击每个标签的内容时这样做:

 case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
    {
    case TCN_SELCHANGE:
    {
        if( TabCtrl_GetCurSel( ( ( LPNMHDR ) lParam) -> hwndFrom ) == 0 ) {
                ShowWindow( hwndTabcontentDialog1, SW_SHOW );
                ShowWindow( hwndTabcontentDialog2, SW_HIDE );

            } else {
                ShowWindow( hwndTabcontentDialog1, SW_HIDE );
                ShowWindow( hwndTabcontentDialog2, SW_SHOW );
            }
              }

现在选项卡已创建且一切正常(当前选项卡的内容不可见),但是当我单击其中一个选项卡项时,对话框将覆盖所有选项卡控件,您无法再看到选项卡。 怎么了 ?我应该修改什么?

1 个答案:

答案 0 :(得分:0)

创建对话框后,立即使用MoveWindow重新定位/调整它们的大小。 TCM_ADJUSTRECT选项卡控件消息可以帮助您确定用于创建对话框的正确位置/大小。