Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Базови елементи на приложение изградено с MFC поддръжка


Информационни технологии | 2009-12-04 | 142 сваляния

12. Базови елементи на приложение изградено с MFC поддръжка: приложение, рамка, прозорец. Асоциране на събщения и карти на съобщения. Макроси свързани с картите на събщенията. Последователност при търсене на съответствие за подадено съобщение. Кодови таблици и макрос _T.


За съобщенията и карта на съобщението:

Картата на съобщението съпоставя съобщението и метод за обработката му.

Подразбиращия се механизъм в една визуализационна среда е virtual method таблица за достъп до методите (чрез Runtime се конструира VMT). Чрез VMT би работил, но трябва да се направи VMT за всички съобщения, но може да се използва само едно.За това този механизъм е неефективен и е заменен с картата на съобщенията.

Картата на съобщенията се отнася в рамката на един клас, а не на цяло приложение.За всеки клас в който се генерира и обработва съобщението трябва да има карта на съобщенията.За да постави карта на съобщенията трябва:

1. В декларазията на класа да се постави DECLARE_Messege_Map.

2. В реализацията на класа трябва да се имплементира картата между Begin_messege_Map и end_messege_map.Между тях се поставя запис за всяко интересуващо ни приложение.

В Begin_messege_Map има два параметъра.Първия е класа към който се структурира картата, а втория е неговия родител.

Ако средата не предлага твърда врезка между съобщението и обработващата функция, то в картата трябва да се добави запис.

Тук (в нашия пример) е:

On_MESSAGE(WM_MYMESSAGE, OnMyMessage)

afx_msg LPRESULT OnMyMessage(WPARAM wParam,LPARAM lParam);

Декларацията на картата Declare трябва да е в раздела protected. Също така е хубаво да е накрая.

Declare_Message_Map прави селедното:

1.Структурира масив от структури за всяко съобщение и съответстващата му функция.

2.Създава структура чиито полета сочат първия масив, а друг себеподобни структури в родителя.


Begin_Message_Map()- позволява да влезем в картата, т.е връща указател към картата.

Елементите на масива от структури създадени чрез Declare се попълват от елементите след BEGIN_MESSAGE_MAP.


message map структури _messageEntries масиви member ф-ии

CWnd

&CcmdTarget::messageMap WM_DRAWITEM CWnd::OnDrawItem

&CWnd::_messageEntries[0] .

CFrameWnd


&CWnd::MessageMap

&CFrameWnd::_messageEntries[0]


WM_MENUSELECT CFrameWnd::OnMenuSelect

WM_CREATE CFrameWnd::OnCreate

WM_DESTROY CFrameWnd::OnDestroy

ChelloWnd .

&CFrameWnd::messageMap

&CHelloWnd::_messageEntries[0] WM_PAINT CHelloWnd::OnPaint


В програмата съобщението се обработва само в Hellownd (там само има Declaref_Message_Map).

С Hellownd е наследник на CFrameWnd, която пък е наследник на CWnd.

Ако примерно е дошло съобщение в C Hellownd-on.CREATE , то го няма и се търси обработка в родителския клас CFrameWnd, където има обработка и се обработва. Ако примерно дойде On Paint то се обработва директно в СHellownd , защото вече е декларирано.

Кодова таблица на макрос _Т(той е свързан с обработката на низове)

Hello ANSI

LHello-UNICODE

_T(Hello)- според директива #define_UNICODE


Забележка: 1.Декларация TCHAR вместо char;

2.TCHAR* или LPTSTR или LPTSTR вместо char*;

3.дължината на знак е sizeof(TCHAR);

4.вместо стандартни run-time функции:strcopy()->tcscpy() или tcscall();

Базови елементи на приложение изградено с MFC поддръжка

Добави своя коментар:



Тагове от реферата: , , ,

Изтегли в DOC | PDF | ZIP

Подобни материали


Рекурсия ( задачата за ханойските кули ) Информационни технологии | 2010-11-14 | 122 прочитания
Защита на компютърните с-ми Информационни технологии | 2010-11-14 | 24 прочитания
Информационните системи - приоритет за транспортния мениджмънт Информационни технологии | 2010-11-14 | 56 прочитания
Токоизправители с умножаване на напрежението Информационни технологии | 2010-11-14 | 134 прочитания
Правни проблеми на софта Информационни технологии | 2010-11-14 | 30 прочитания
Компресия на аудиоинформация с помощта на насинусоидални вълни Информационни технологии | 2010-11-14 | 42 прочитания
Създаване на организацията за защита Информационни технологии | 2010-11-14 | 150 прочитания
Основи на мрежовото програмиране Информационни технологии | 2010-11-14 | 30 прочитания
Настройване на програми на асемблерен език Информационни технологии | 2010-11-14 | 65 прочитания
Компютарна графика Информационни технологии | 2010-11-14 | 55 прочитания