Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Використання класу CTabCtrl

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Void CTab_controlDlg:OnSelchangingTab (NMHDR* pNMHDR, LRESULT* pResult) {. Видалимо у себе непотрібні перемінні. PPage3→SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE — SWP_NOZORDER); PPage2→SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE — SWP_NOZORDER); PPage1→SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE — SWP_NOZORDER); TODO: Add your control notification handler code here. VERIFY… Читати ще >

Використання класу CTabCtrl (реферат, курсова, диплом, контрольна)

Использование класу CTabCtrl

Tab control — це могутній засіб для рішенню багатьох негараздів у інтерфейсі додатків. Воно дозволять істотно збільшити швидкість роботи вашого докладання, розбити на «частини «діалог в зручною для користувача формі.

В MFC є вмонтований клас роботи з Tab control — клас CTabCtrl.

Для практики напишемо програму, яка використовувати клас CTabCtrl і де буде три «закладання «- діалогу.

Шаги створення проекту:

1) Спочатку створимо проект tab_control типу діалог.

2) У редакторі ресурсів додати Tab Control в шаблон діалогу й призначимо йому ID = IDC_TAB.

3) Використовуючи ClassWizard, додамо переменную-член типу CTabCtrl зі властивістю Control.

4) У OnInitDialog проинициализируем необхідні перемінні для CTabCtrl.

5) Використовуючи ClassWizard, додамо обробку необхідних повідомлень від Tab control «я.

6) Видалимо у себе непотрібні перемінні.

Для початку зробіть перші три пункту, створіть зміну m_ctrTab класу CTabCtrl. Після цього, у функцие BOOL CTab_controlDlg:OnInitDialog () добавте таке:

TC_ITEM TabItem;

TabItem.mask = TCIF_TEXT;

TabItem.pszText = «Закладка1 » ;

m_ctrTab.InsertItem (0, &TabItem);

TabItem.pszText = «Закладка2 » ;

m_ctrTab.InsertItem (1, &TabItem);

TabItem.pszText = «Закладка3 » ;

m_ctrTab.InsertItem (2, &TabItem);

Это код ініціалізації Tab Control, ми створюємо три закладання. Тепер потрібно, щоб за натискання кожну закладку, на екрані з’являлося те, що ми мусимо. Найпростіший варіант — це використати в кожну закладку по діалогу — і потім просто області Tab Control «а — виводити потрібний діалог, залежно від поточної закладання.

Сделаем це. Додамо три діалогу в редакторі ресурсів і створимо кожному їх за класом — наступникові від CDialog. Назвемо ці класи CPage1, CPage2 і CPage3(файли Page1. cpp (h), Page2. cpp (h), Page3. cpp (h)) .

В властивості цих трьох діалогів поставте Style як «Child «і Border як «none «- дуже важливо, а якраз в діалогах створіть якісь елементи (наприклад, типу Static Text), щоб бачили відмінність.

Напишите ці три рядки на початку файла tab_controlDlg.cpp.

#include «Page1.h «.

#include «Page2.h «.

#include «Page3.h «.

Продолжим в OnInitDialog:

Надо послідовно створити все сторінки, причому покажчики ними зберігаються у самому m_ctrTab !!! У цьому вся прикладі ми використали lParam структури TCITEM як сховище покажчика. Тепер перемінні pPage1, pPage2 і pPage3 більше непотрібні - покажчики зберігаються у надійному місці! Для кожної сторінки викликається метод ShowWindow () — для відображення першої, і приховання інших сторінок.

CPage1* pPage1;

pPage1 = new CPage1;

TabItem.mask = TCIF_PARAM;

TabItem.lParam = (LPARAM)pPage1;

m_ctrTab.SetItem (0, &TabItem);

VERIFY (pPage1->Create (CPage1:IDD, &m_ctrTab));

pPage1->SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);

pPage1->ShowWindow (SW_SHOW);

CPage2* pPage2;

pPage2 = new CPage2;

TabItem.mask = TCIF_PARAM;

TabItem.lParam = (LPARAM)pPage2;

m_ctrTab.SetItem (1, &TabItem);

VERIFY (pPage1->Create (CPage2:IDD, &m_ctrTab));

pPage2->SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);

pPage2->ShowWindow (SW_HIDE);

CPage3* pPage3;

pPage3 = new CPage3;

TabItem.mask = TCIF_PARAM;

TabItem.lParam = (LPARAM)pPage3;

m_ctrTab.SetItem (2, &TabItem);

VERIFY (pPage1->Create (CPage3:IDD, &m_ctrTab));

pPage3->SetWindowPos (NULL, 10, 30, 0, 0, SWP_NOSIZE | SWP_NOZORDER);

pPage3->ShowWindow (SW_HIDE);

Теперь додамо код по відображенню поточної сторінки і прихованню попередньої. І тому додамо оброблювачі повідомлень TCN_SELCHANGE і TCN_SELCHANGING :

void CTab_controlDlg:OnSelchangingTab (NMHDR* pNMHDR, LRESULT* pResult) {.

// TODO: Add your control notification handler code here.

int nTab = m_ctrTab.GetCurSel ();

TC_ITEM tci;

tci.mask = TCIF_PARAM;

m_ctrTab.GetItem (nTab, &tci);

ASSERT (tci.lParam);

CWnd* pWnd = (CWnd *)tci.lParam;

pWnd->ShowWindow (SW_HIDE);

*pResult = 0;

}.

void CTab_controlDlg:OnSelchangingTab (NMHDR* pNMHDR, LRESULT* pResult) {.

int nTab = m_ctrTab.GetCurSel ();

TC_ITEM tci;

tci.mask = TCIF_PARAM;

m_ctrTab.GetItem (nTab, &tci);

ASSERT (tci.lParam);

CWnd* pWnd = (CWnd *)tci.lParam;

pWnd->ShowWindow (SW_HIDE);

*pResult = 0;

}.

Здесь використовуються ті ж самі покажчики, які ми сховали в OnInitDialog.

Теперь визволимо пам’ять і зруйнуємо діалогові вікна при виході з докладання.

Добавим функцію OnDestroy:

void CTab_controlDlg:OnDestroy () {.

CDialog:OnDestroy ();

CWnd* pWnd;

TC_ITEM tci;

tci.mask = TCIF_PARAM;

for (int і = 2; i>=0; і—) {.

m_ctrTab.GetItem (i, &tci);

ASSERT (tci.lParam);

pWnd = (CWnd *)tci.lParam;

pWnd->DestroyWindow ();

delete pWnd;

}.

}.

Ну ось і, додаток готово.

Список литературы

Для підготовки даної роботи було використані матеріали із сайту internet.

Показати весь текст
Заповнити форму поточною роботою