Вставка CTabCtrl
От: Darked  
Дата: 21.09.04 10:15
Оценка:
Доброе время суток всем.
Народ, подскажите пжалуста как правильно вставить сабж в CDialogImpl. Я делаю так:

RECT rec;
    CWindow* pTab = &(GetDlgItem(IDC_TAB_TYPE));
// создание табктрл
    pTab->GetWindowRect(&rec);
    m_TabType.Create(this->m_hWnd,&rec,NULL,0,0,0U);

    TC_ITEM TabCtrlItem;
    TabCtrlItem.mask = TCIF_TEXT;
    _ASSERT(str.LoadString("Process")) ;
    TabCtrlItem.pszText = (LPTSTR) (LPCTSTR) str;
    m_TabType.InsertItem( 0, &TabCtrlItem );
    
    m_TabType.SetCurSel(0);
    RECT rc ;
    m_TabType.GetWindowRect(&rc) ; 
    m_TabType.AdjustRect(FALSE, &rc);
    ScreenToClient(&rc) ;

    //создаем объект диалога
    m_Integral.Create(m_hWnd);
    m_Integral.MoveWindow(&rc);
    m_Integral.ShowWindow(SW_SHOWNORMAL) ;
    return true;

Но у меня не появляется названия вкладки, да и всавляемый диалог не привязывается к Табу (такое впечатление).
Подскажите как правильно, или киньте линку, где можно посмотреть пример, пожалуйста.
Per aspera ad astra
Re: Вставка CTabCtrl
От: _nn_  
Дата: 21.09.04 16:53
Оценка:
Здравствуйте, Darked, Вы писали:

D> Доброе время суток всем.

D> Народ, подскажите пжалуста как правильно вставить сабж в CDialogImpl. Я делаю так:

D>
D>RECT rec;
D>//    CWindow* pTab = &(GetDlgItem(IDC_TAB_TYPE)); // по пальцам за такое  :maniac: 
 CWindow tab = GetDlgItem(IDC_TAB_TYPE); // это вам не MFC , а WTL !
D>// создание табктрл
//    pTab->>GetWindowRect(&rec);
 tab.GetWindowRect(&rect);
D>    m_TabType.Create(this->m_hWnd,&rec,NULL,0,0,0U);

D>    TC_ITEM TabCtrlItem;
D>    TabCtrlItem.mask = TCIF_TEXT;
D>    _ASSERT(str.LoadString("Process")) ;
D>    TabCtrlItem.pszText = (LPTSTR) (LPCTSTR) str;
D>    m_TabType.InsertItem( 0, &TabCtrlItem );
    
D>    m_TabType.SetCurSel(0);
D>    RECT rc ;
D>    m_TabType.GetWindowRect(&rc) ; 
D>    m_TabType.AdjustRect(FALSE, &rc);
D>    ScreenToClient(&rc) ;

D>    //создаем объект диалога
D>    m_Integral.Create(m_hWnd);
D>    m_Integral.MoveWindow(&rc);
D>    m_Integral.ShowWindow(SW_SHOWNORMAL) ;
D>    return true;

D>

D> Но у меня не появляется названия вкладки, да и всавляемый диалог не привязывается к Табу (такое впечатление).
D>Подскажите как правильно, или киньте линку, где можно посмотреть пример, пожалуйста.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Вставка CTabCtrl
От: Darked  
Дата: 22.09.04 04:32
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Darked, Вы писали:


D>> Доброе время суток всем.

D>> Народ, подскажите пжалуста как правильно вставить сабж в CDialogImpl. Я делаю так:

D>>
D>>RECT rec;
D>>//    CWindow* pTab = &(GetDlgItem(IDC_TAB_TYPE)); // по пальцам за такое  :maniac: 
__> CWindow tab = GetDlgItem(IDC_TAB_TYPE); // это вам не MFC , а WTL !
D>>// создание табктрл
__>//    pTab->>GetWindowRect(&rec);
__> tab.GetWindowRect(&rect);



Я поменял как вы написали, но результат от этого не изменился ;(
Per aspera ad astra
Re[3]: Вставка CTabCtrl
От: _nn_  
Дата: 22.09.04 09:10
Оценка:
Здравствуйте, Darked, Вы писали:

D> Я поменял как вы написали, но результат от этого не изменился ;(


Ну тогда давайте по порядку:
Какой тип у m_TabType ?
Очевидно CTabCtrl.

Какой тип у str ?
Очевидно CString.

Почему не обнуляется TC_ITEM ?
TC_ITEM TabCtrlItem = {0};

m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Вставка CTabCtrl
От: Darked  
Дата: 22.09.04 09:50
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Darked, Вы писали:


D>> Я поменял как вы написали, но результат от этого не изменился ;(


__>Ну тогда давайте по порядку:

__>Какой тип у m_TabType ?
__>Очевидно CTabCtrl.
Да, CTabCtrl
__>Какой тип у str ?
__>Очевидно CString.
Да, CString
__>Почему не обнуляется TC_ITEM ?
__>
__>TC_ITEM TabCtrlItem = {0};
      Сделал обнуление.
__>m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
__>

Возращает 0, как и должно быть.
Per aspera ad astra
Re[5]: Вставка CTabCtrl
От: _nn_  
Дата: 22.09.04 10:37
Оценка:
Здравствуйте, Darked, Вы писали:

D>Здравствуйте, _nn_, Вы писали:


__>>Здравствуйте, Darked, Вы писали:


D>>> Я поменял как вы написали, но результат от этого не изменился ;(


__>>Ну тогда давайте по порядку:

__>>Какой тип у m_TabType ?
__>>Очевидно CTabCtrl.
D> Да, CTabCtrl
__>>Какой тип у str ?
__>>Очевидно CString.
D> Да, CString
__>>Почему не обнуляется TC_ITEM ?
__>>
__>>TC_ITEM TabCtrlItem = {0};
D>      Сделал обнуление.
__>>m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
__>>

D> Возращает 0, как и должно быть.

А вот что пишется:

Nonzero if successful; otherwise, it is zero.


А так :
TCITEM tcitem ={0};
tcitem.mask=TCIF_TEXT;
tcitem.pszText=(LPTSTR)(LPCTSTR)str;
tcitem.cchTextMax=str.GetLength();
tcitem.iImage=-1;
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[6]: Вставка CTabCtrl
От: Darked  
Дата: 22.09.04 11:11
Оценка:
__>>>Ну тогда давайте по порядку:
__>>>Какой тип у m_TabType ?
__>>>Очевидно CTabCtrl.
D>> Да, CTabCtrl
__>>>Какой тип у str ?
__>>>Очевидно CString.
D>> Да, CString
__>>>Почему не обнуляется TC_ITEM ?
__>>>
__>>>TC_ITEM TabCtrlItem = {0};
D>>      Сделал обнуление.
__>>>m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
__>>>

D>> Возращает 0, как и должно быть.

__>А вот что пишется:

__>

__>Nonzero if successful; otherwise, it is zero.

Вообще — то пишется вот что:

Zero-based index of the new tab if it is successful; otherwise, it is –1.

Посмотрев исходники мы увидим(atlctrls.h):
  int InsertItem(int nItem, LPTCITEM pTabCtrlItem)
    {
        ATLASSERT(::IsWindow(m_hWnd));
        return (int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem);
    }

Вы, наверное, перепутали с SetItem.

__>А так :

__>
__>TCITEM tcitem ={0};
__>tcitem.mask=TCIF_TEXT;
__>tcitem.pszText=(LPTSTR)(LPCTSTR)str;
__>tcitem.cchTextMax=str.GetLength();
__>tcitem.iImage=-1;
__>

А так ничего не меняется.
Per aspera ad astra
Re[7]: Вставка CTabCtrl
От: _nn_  
Дата: 22.09.04 11:21
Оценка:
Здравствуйте, Darked, Вы писали:

__>>>>Ну тогда давайте по порядку:

__>>>>Какой тип у m_TabType ?
__>>>>Очевидно CTabCtrl.
D>>> Да, CTabCtrl
__>>>>Какой тип у str ?
__>>>>Очевидно CString.
D>>> Да, CString
__>>>>Почему не обнуляется TC_ITEM ?
__>>>>
__>>>>TC_ITEM TabCtrlItem = {0};
D>>>      Сделал обнуление.
__>>>>m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
__>>>>

D>>> Возращает 0, как и должно быть.

__>>А вот что пишется:

__>>

__>>Nonzero if successful; otherwise, it is zero.

D> Вообще — то пишется вот что:
D>

D> Zero-based index of the new tab if it is successful; otherwise, it is –1.

D> Посмотрев исходники мы увидим(atlctrls.h):
D>
D>  int InsertItem(int nItem, LPTCITEM pTabCtrlItem)
D>    {
D>        ATLASSERT(::IsWindow(m_hWnd));
D>        return (int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem);
D>    }
D>

D> Вы, наверное, перепутали с SetItem.
Видимо ошибка в документации.

__>>А так :

__>>
__>>TCITEM tcitem ={0};
__>>tcitem.mask=TCIF_TEXT;
__>>tcitem.pszText=(LPTSTR)(LPCTSTR)str;
__>>tcitem.cchTextMax=str.GetLength();
__>>tcitem.iImage=-1;
__>>

D> А так ничего не меняется.

Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[8]: Вставка CTabCtrl
От: Darked  
Дата: 22.09.04 12:33
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Darked, Вы писали:


__>>>>>Ну тогда давайте по порядку:

__>>>>>Какой тип у m_TabType ?
__>>>>>Очевидно CTabCtrl.
D>>>> Да, CTabCtrl
__>>>>>Какой тип у str ?
__>>>>>Очевидно CString.
D>>>> Да, CString
__>>>>>Почему не обнуляется TC_ITEM ?
__>>>>>
__>>>>>TC_ITEM TabCtrlItem = {0};
D>>>>      Сделал обнуление.
__>>>>>m_TabType.InsertItem( 0, &TabCtrlItem ); // что возвращает ?
__>>>>>

D>>>> Возращает 0, как и должно быть.

__>>>А вот что пишется:

__>>>

__>>>Nonzero if successful; otherwise, it is zero.

D>> Вообще — то пишется вот что:
D>>

D>> Zero-based index of the new tab if it is successful; otherwise, it is –1.

D>> Посмотрев исходники мы увидим(atlctrls.h):
D>>
D>>  int InsertItem(int nItem, LPTCITEM pTabCtrlItem)
D>>    {
D>>        ATLASSERT(::IsWindow(m_hWnd));
D>>        return (int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem);
D>>    }
D>>

D>> Вы, наверное, перепутали с SetItem.
__>Видимо ошибка в документации.

__>>>А так :

__>>>
__>>>TCITEM tcitem ={0};

__>>>tcitem.mask=TCIF_TEXT;
__>>>tcitem.pszText=(LPTSTR)(LPCTSTR)str;
__>>>tcitem.cchTextMax=str.GetLength();
__>>>tcitem.iImage=-1;
__>>>

D>> А так ничего не меняется.

__>Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.

В том то и дело, что там примеры для MFC. Как в MFC сделать я научился,в WTL такое не прокатывает.
Per aspera ad astra
Re[9]: Вставка CTabCtrl
От: _nn_  
Дата: 22.09.04 12:52
Оценка:
Здравствуйте, Darked, Вы писали:

__>>Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.

D> В том то и дело, что там примеры для MFC. Как в MFC сделать я научился,в WTL такое не прокатывает.
Использование очень похоже с небольшой разницей.

А как проходит Create ? Успешно ?
Может AtlInitCommonControls не вызвали ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[10]: Вставка CTabCtrl
От: Darked  
Дата: 23.09.04 04:22
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Darked, Вы писали:


__>>>Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.

D>> В том то и дело, что там примеры для MFC. Как в MFC сделать я научился,в WTL такое не прокатывает.
__>Использование очень похоже с небольшой разницей.

__>А как проходит Create ? Успешно ?

__>Может AtlInitCommonControls не вызвали ?
Create вроде бы проходит успешно, насколько я могу судить. Возращается хэндл. AtlInitCommonControls вызывается, я на всякий случай добавил параметр ICC_TAB_CLASSES, но ничего пока не изменилось.
Я не совсем понимаю, где происходит связка моего ресурса IDC_TAB_TYPE с созданным TAb'ом, и происходит ли это вообще. В MFC в последнем параметре Create стоит nID ресурса, в WTL же _U_MENUorID MenuOrID, как я понимаю, Id какой — то менюшки, а куда ID моего ресурса запихнуть???
Per aspera ad astra
Re[11]: Вставка CTabCtrl
От: _nn_  
Дата: 23.09.04 06:00
Оценка:
Здравствуйте, Darked, Вы писали:

D>Здравствуйте, _nn_, Вы писали:


__>>Здравствуйте, Darked, Вы писали:


__>>>>Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.

D>>> В том то и дело, что там примеры для MFC. Как в MFC сделать я научился,в WTL такое не прокатывает.
__>>Использование очень похоже с небольшой разницей.

__>>А как проходит Create ? Успешно ?

__>>Может AtlInitCommonControls не вызвали ?
D> Create вроде бы проходит успешно, насколько я могу судить. Возращается хэндл. AtlInitCommonControls вызывается, я на всякий случай добавил параметр ICC_TAB_CLASSES, но ничего пока не изменилось.
D> Я не совсем понимаю, где происходит связка моего ресурса IDC_TAB_TYPE с созданным TAb'ом, и происходит ли это вообще. В MFC в последнем параметре Create стоит nID ресурса, в WTL же _U_MENUorID MenuOrID, как я понимаю, Id какой — то менюшки, а куда ID моего ресурса запихнуть???

_U_MENUorID — это или идентификатор меню или идентификатор контроля, т.е. то что надо нам.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: Вставка CTabCtrl
От: Darked  
Дата: 24.09.04 18:02
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Darked, Вы писали:


D>>Здравствуйте, _nn_, Вы писали:


__>>>Здравствуйте, Darked, Вы писали:


__>>>>>Попробуйте побродить по MSDN, там будет пример рабочий с Tab Control.

D>>>> В том то и дело, что там примеры для MFC. Как в MFC сделать я научился,в WTL такое не прокатывает.
__>>>Использование очень похоже с небольшой разницей.

__>>>А как проходит Create ? Успешно ?

__>>>Может AtlInitCommonControls не вызвали ?
D>> Create вроде бы проходит успешно, насколько я могу судить. Возращается хэндл. AtlInitCommonControls вызывается, я на всякий случай добавил параметр ICC_TAB_CLASSES, но ничего пока не изменилось.
D>> Я не совсем понимаю, где происходит связка моего ресурса IDC_TAB_TYPE с созданным TAb'ом, и происходит ли это вообще. В MFC в последнем параметре Create стоит nID ресурса, в WTL же _U_MENUorID MenuOrID, как я понимаю, Id какой — то менюшки, а куда ID моего ресурса запихнуть???

__>_U_MENUorID — это или идентификатор меню или идентификатор контроля, т.е. то что надо нам.

Подставил ID...но дело меняет мало.
Per aspera ad astra
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.