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

Дъщерни контроли в Windows среда


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

17 Дъщерни контроли в Windows среда. Принзипи на обработка на събития в дъщерни контроли.Класически и общи контроли.Статични, бутони, контроли за редактиране и листване.Обвивка с класовете на MFC. Методика на разширяване функционалността на стандартен контрол.


Дъщерни контроли

определяне на родител: hwndParent = GetParent(hwndChild);

съобщения към родител: SendMessage(hwndParent,message,wParam,lParam);

Бутони (pushbutton, check box, radio, group box)

WM_COMMAND

SendMessage(hwndButton, BM_SETSTATE,1,0); // симулира натиск.

Това е прозорец, който има някаква специфика при обработването и се явява дъщерен на един по общ прозорец, най-често съобщения към родителя и най-честото съобщение е window command.


Прихващане на функции (Windows subclassing)

1. lpfnScrollProc=MakeProcInstance((FARPROC)ScrollProc, hInstance);

2.Чрез GetWindowLong() се извлича адреса на стандартната функция.

3.Чрез SetWindowLong() се установява новия адрес .

4. Връщане към стандартната Windows функция :

CallWindowProc(lpfnStandart, hwnd, message, wParam, lParam);


Контрол за редактиране (edit )

CreateWindow(edit, );

бутонът изпраща WM_COMMAND с нотификационен код ( в lParam).


Контроли в 32 битови версии

над 20 типа.

6 са класически- от първите версии. Имат поддръжка на MFC:

CButton, CListBox; CEdit; CComboBox; CScrollBar; CStatic.


ето създаване на бутон:

CButton m_wndPushButton;

m_wndPushButton.Create(_T(Start), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, IDC_BUTTON);

CEdit

CEdit::SetMargins() // задава размерите на полетата вляво и дясно

CEdit::SetRect() // задава редакторската област в контрола

CEdit::SetLimitText() // задава макс. брой символи (подрзабират се 30000.

CEdit::SetWindowText()

CEdit::GetWindowText() ф-иите са наследени от CWnd

::Clear()

::Cut() за селектиран текст

::Copy()

::Paste()

Пример: edit контрол, който приема само числови стойности:


class CNumEdit : public CEdit

{ protected:

afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

DECLARE_MESSAGE_MAP()

};

BEGIN_MESSAGE_MAP(CNumEdit, CEdit)

ON_WM_CHAR()

END_MESSAGE_MAP()

void CNumEdit::OnChar((UINT nChar, UINT nRepCnt, UINT nFlags)

{

if((( nChar >= _T(0)) && (nChar <= _T(9)))) CEdit::OnChar(nChar, nRepCnt, nFlags);

}


Дъщерни контроли в Windows среда

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



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

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

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


Протокол 4 - MOS и CMOS логически схеми Информационни технологии | 2009-12-04 | 102 прочитания
Семантика на програмните езици. Множеството Fn. Точни горни граници на Fn Информационни технологии | 2009-12-04 | 41 прочитания
Времеви анализ на сигналите Информационни технологии | 2009-12-04 | 62 прочитания
Множествено наследяване Информационни технологии | 2009-12-04 | 180 прочитания
ВЪВЕДЕНИЕ В ИЗКУСТВЕНИЯ ИНТЕЛЕКТ Информационни технологии | 2009-12-04 | 149 прочитания
Асемблери - Теми 5, 6, 7, 8 Информационни технологии | 2009-12-04 | 224 прочитания
Компютри. Компютърни мрежи Информационни технологии | 2009-12-04 | 104 прочитания
Клавиатура Информационни технологии | 2009-12-04 | 115 прочитания
Семантика на програмните езици. Компактни оператопи. Свойства Информационни технологии | 2009-12-04 | 53 прочитания
ПОЖАРОИЗВЕСТИТЕЛНИ СИСТЕМИ И СИСТЕМИ ЗА КОНТРОЛ НА ДОСТЪПА Информационни технологии | 2009-12-04 | 171 прочитания