|
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 используется очень часто и есть у многих объектов. Обычно она требует :
- Строку для имени или надписи.
- Стиль.
- Размеры и положение.
- Куда вставлять.
- Идентификатор.
This означает, что вставлять туда где находишься (мы в классе рамки окна).
Шпаргалка
- В конструкторе окна надо объявить указатели на элементы управления.
CStatic* MyStatic;
..............
- Указатели превратить в объекты и вызвать Create.
MyButton = new CButton();
MyButton->Create("MyButton",WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(120,10,220,50),this,IDC_MYBUTTON);
...............
- Откомпилировать , создать и запустить. Результата достигает не только Тайд!
Предыдущий Шаг | Следующий Шаг | Оглавление
By Artem.
Используются технологии uCoz
|