Иллюстрированный самоучитель по Visual Studio.Net


Нестандартные кнопки - часть 2


Для этого:

  1. В окне ResourceView вызовите контекстное меню на элементе Тгее.гс и выберите команду Add > Resource.

  2. В появившемся диалоге выберите тип ресурса Bitmap и нажмите кнопку New.

  3. В окне Properties или с помощью мыши задайте желаемый размер будущей кнопки (например, 40 на 25) и создайте изображение треугольника.

  4. Присвойте новому ресурс идентификатор "TRIU".

  5. Создайте копию изображения, временно заменив язык, и присвойте копии идентификатор "TRID", возвратив язык.

  6. Повторите эти шаги для двух других кнопок, используя строковые идентификаторы: "PENTU", "PENTD", "STARU", "STARD".

  7. С помощью Studio.Net введите (переопределите) в классе CPolyDlg виртуальную функцию OnlnitDialog и измените тело этой функции так, чтобы оно было:

BOOL CPolyDlg::OnInitDialog()

{

//====== Загрузка из ресурсов изображений кнопок

m_cTri.AutoLoad (IDCJTRI, this);

m_cPent.Autoload (IDC_PENT, this);

m_cStar.AutoLoad (IDC_STAR, this);

CDialog::OnlnitDialog{);

//====== Установка диапазона ползунков

m_rSlider.SetRange (0, 255);

m_gSlider.SetRange (0, 255);

m_bSlider.SetRange (0, 255);

//====== Установка цены деления ползунков

m_rSlider.SetTicFreq (50);

m_gSlider.SetTicFreq (50);

m_bSlider.SetTicFreq (50);

//=== Вызов обработчиков для начальной

//=== закраски окон и установки ползунков OnChangeRedO ;

OnChangeGreen();

OnChangeBlue ();

return TRUE;

}

В Visual Studio 6 эта функция создавалась как обработчик сообщения WM_INITDIALOG, здесь в Studio.Net 7.0 я не обнаружил сообщения с таким именем в списке сообщений диалогового класса. Однако в списке Overrides присутствует строка с именем OnlnitDialog. В принципе рассматриваемая функция и в Visual Studio 6 имеет прототип virtual BOOL OnlnitDialog, но classWizard 6-й версии причисляет ее к функциям-обработчикам сообщений. Характерным моментом является также то, что прототип функции в Studio.Net изменился и стал BOOL OnlnitDialog (void);. Возвращаясь к диалоговому классу, заметим, что обращение к методам класса CTreeDoc требует включить традиционную строку

#include "TreeDoc.h"

в список директив препроцессора файла PolyDlg.cpp.




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