ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Використання класу 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 i = 2; i> = 0; i -) (

    m_ctrTab.GetItem (i, & tci);

    ASSERT (tci.lParam);

    pWnd = (CWnd *) tci.lParam;

    pWnd-> DestroyWindow ();

    delete pWnd;

    )

    )

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

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

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status