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


Управление с помощью объекта класса-оболочки - часть 2


В диалоговом классе мы попутно произвели упрощения, которые связаны с удалением ненужных функций OnPaint и OnQueryDragicon. Эти изменения обсуждались при разработке приложения Look. Во избежание недоразумений, которые могут возникнуть в связи с многочисленным ручным редактированием, приведем коды как декларации, так и реализации класса CTestGLDlg:

//=== Декларация диалогового класса (Файл TestGLDlg.h)

#include "opengl.h"

#pragma once

class CTestGLDlg : public CDialog

{

public:

CTestGLDlg(CWnd* p = NULL);

enum

{

IDD = IDD_TESTGL_DIALOG

};

//======= Объект класса-оболочки

COpenGL m_Ctrl;

//======= Запоминаем способ изображения

BOOL m_bQuads;

//======= Реакции на регуляторы в окне диалога

void OnSelchangeFill(void);

void OnClickedFilename(void);

afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);

void OnCiickedBkcir(void);

void OnClickedQuads(void);

void OnClickedStrips(void);

protected:

virtual

void DoDataExchange(CDataExchange* pDX) ;

virtual BOOL OnlnitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM IParam);

DECLARE_MESSAGE_MAP()

};

В файл реализации методов класса мы кроме функций обработки сообщений от элементов управления вставили код начальной установки этих элементов. Для этой цели нам опять понадобилась связь с сервером, которую обеспечивает объект m_ctrl класса-оболочки. Характерным моментом является то, что обрабатываем событие WM_HSCROLL, которое поступает окну диалога, вместо того чтобы обработать уведомляющее событие NM_RELEASEDCAPTURE, которое идет от элемента типа Slider Control. Такая тактика позволяет реагировать на управление ползунком клавишами, а не только мышью:

#include "stdafx.h"

#include "TestGL.h"

#include "TestGLDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = _FILE_;

#endif

//====== Пустое тело конструктора

CTestGLDlg::CTestGLDlg(CWnd* p) : CDialog(CTestGLDlg::IDD, p){}




Начало  Назад  Вперед



Книжный магазин