www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 2 - Вставка элемента управления в окно (Controls)

Создание проекта

Для работы возьмем наш первый проект и внесем изменения (вообще я так и задумал). Пока у нас все в одном СРР файле (это не хорошо, исправимся).

Создаем код

Это нужно поместить где-нибудь после всех #include

  #define IDC_MYBUTTON 100 // Идентификатор кнопки
  #define IDC_MYEDIT 102 //Идентифкатор поля редактирования
Необходимо изменить описания конструктора класса окна.
 class CMainWnd : public CFrameWnd
 {
  public:
    CMainWnd(); 
  private:
    CStatic* MyStatic; // Указатель на объект надпись
    CButton* MyButton; // Указатель на объект кнопка
    CEdit* MyEdit; // Указатель на объект поле редактирования
 };
И изменения в конструкторе окна.

CMainWnd::CMainWnd()
{
 Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,NULL,NULL); 
 MyStatic = new CStatic(); // новый
 MyStatic->Create("MyStatic",WS_CHILD|WS_VISIBLE|SS_CENTER,
     CRect(10,10,100,50),this); // создали
 MyButton = new CButton();
 MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER,
     CRect(120,10,220,50),this,IDC_MYBUTTON);
 MyEdit = new CEdit();
 MyEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
     CRect(240,10,340,50),this,IDC_MYEDIT);
}

Описание

Windows в отличии от DOS содержит в себе многие элементы управления. Оказалось, что кнопки, поля с надписями, списки и т.д. используются в каждой программе. Сам программный код реализации этих элементов находится в DLL Windows. То есть в вашем компиляторе нет реализации этих функций в библиотеках (lib) , там только ссылки. Вот мы и используем их в своей программе. У всех элементов управления есть одно свойство. Они должны все иметь идентификатор - число, которое определяет этот элемент управления. Правило простое - хочешь элемент управления определи идентификатор.

Первыми строками используя #define мы объявляем идентификаторы. Смысл этих команд в том, что набору символов присваивается число. И при компиляции вместо набора символов подставится число, удобно очень.

Дальше в класс рамки окна вставляет указатели на объекты элементов управления. Это только указатели, т.е. числа. Объекта самого нет. Каждый объект использует память и до того как он не понадобится хранится только указатель.

В конструкторе окна мы и создадим объекты new, а после вызовем функцию Create, которая из объекта создаст элемент управления. Если вы обратили внимание, то у MyStatic нет идентификатора. Это обман, он просто задан по умолчанию как 0xffff. Это подтверждает правило кесарю - кесарево, а элементу управления идентификатор. Функция Create используется очень часто и есть у многих объектов. Обычно она требует :

  1. Строку для имени или надписи.
  2. Стиль.
  3. Размеры и положение.
  4. Куда вставлять.
  5. Идентификатор.
This означает, что вставлять туда где находишься (мы в классе рамки окна).

Шпаргалка

  1. В конструкторе окна надо объявить указатели на элементы управления.
      CStatic* MyStatic; 
      ..............
    
  2. Указатели превратить в объекты и вызвать Create.
      MyButton = new CButton();
      MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER,
          CRect(120,10,220,50),this,IDC_MYBUTTON);
      ...............
    
  3. Откомпилировать , создать и запустить. Результата достигает не только Тайд!

Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz