Учебник по Visual C++ .Net



Диалог по управлению светом В - часть 2


/p>

Диалоговый класс

Для управления диалогом следует создать новый класс. Для этого можно воспользоваться контекстным меню, вызванным над формой диалога.

  • Выберите в контекстном меню команду Add Class.

  • В левом окне диалога Add Class раскройте дерево Visual C++, сделайте выбор MFC > MFC Class и нажмите кнопку Open.

  • В окне мастера MFC Class Wizard задайте имя класса CPropDlg, в качестве базового класса выберите CDialog. При этом станет доступным ноле Dialog ID.

  • В это поле введите или выберите из выпадающего списка идентификатор шаблона диалога IDD_PROP и нажмите кнопку Finish.

    Просмотрите объявление класса CPropDlg, которое должно появиться в новом окне PropDlg.h. Как видите, мастер сделал заготовку функции DoDataExchange для обмена данными с элементами управления на форме диалога. Однако она нам не понадобится, так как обмен данными будет производиться в другом стиле, характерном для приложений не MFC-происхождения. Такое решение выбрано в связи с тем, что мы собираемся перенести рассматриваемый код в приложение, созданное на основе библиотеки шаблонов ATL. Это будет сделано в уроке 9 при разработке элемента ActiveX, а сейчас введите в диалоговый класс новые данные. Они необходимы для эффективной работы с диалогом в немодальном режиме. Важным моментом в таких случаях является использование указателя на оконный класс. С его помощью легко управлять окном прямо из диалога. Мы слегка изменили конструктор и ввели вспомогательный метод GetsiiderNum. Изменения косметического характера вы обнаружите сами:

    #pragma once

    class COGView; // Упреждающее объявление

    class CPropDlg : public CDialog

    {

    DECLARE_DYNAMIC(CPropDlg)

    public:

    COGView *m_pView; // Адрес представления

    int m_Pos[ll]; // Массив позиций ползунков

    CPropDlg(COGView* p) ;

    virtual ~CPropDlg();

    // Метод для выяснения ID активного ползунка int GetsiiderNum(HWND hwnd, UINT& nID) ;

    enum { IDD = IDD_PROP };

    protected: virtual void DoDataExchange(CDataExchange* pDX);

    DECLARE_MESSAGE_MAP()




    Содержание  Назад  Вперед