инструменти и лентата на състоянието панел

  • Когато се работи с менюто трябва да се обърне внимание на учениците върху промяната на менюто по време на изпълнението на програмата, така че на практика това е много често се използва.
  • Илюстрира материал трябва да бъде под илюстративни примери. Много добре пригоден за тази програма от пакета Microsoft Office.
  • Windows менюто
  • Контрол панел и прилагането рамка
  • лента с инструменти
  • В лентата за състоянието.

    меню Microsoft Windows - познат на всички компоненти на приложенията, които се състои от хоризонтален списък от елементи, най-високо ниво; той е свързан с меню, което се отваря, когато потребителят избере който и да е - някой от нейните елементи. Обикновено дограма се определя от менюто ресурс по подразбиране, който се зарежда, когато създавате прозореца. Можете да определите ресурсите и не е свързан с рамката на прозореца. В този случай, програмата трябва да се обадите на функциите, необходими, за да изтеглите и да активирате менюто.

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

    Актуализация команда UI

    Доста често е необходимо да промените външния вид на елементите от менюто, за да отрази вътрешното състояние на програмата. Например, ако в менюто Edit има Clear All команда (Изчистване на всички), а след това може да искате да го изключите, ако няма какво да се почисти. Няма съмнение, че Windows-базирани програми в менюто, което виждате с увреждания и маркирани с екип отметка.

    Когато програмиране в Win32 синхронизирате състоянието на елементите от менюто, в съответствие със състоянието на заявлението не е толкова прост. Всяка част от код, който се променя вътрешното състояние на програмата трябва да съдържа твърдения, които се актуализират в менюто. В MFC-библиотеката осигурява по-различен подход, основан на функция специална обработка повикване, което да осъвремени интерфейс команда на потребителя се отваря за всяко меню. Аргументът на тази функция - обект CCmdUI и която да съдържа указател към елемент от менюто. С помощта на тази показалка, манипулатор функция може да промените външния вид на командата на менюто. Тези манипулатори са приложими по отношение на падащото меню за, но не и в менюто най-високо ниво е неизменно присъства на екрана. Такава манипулатор не може да се използва, например, за да изключите от менюто File.

    за определяне на изискванията за лица, и които се актуализират команда потребителски интерфейс, подобен на изискванията за определянето на командните манипулатори. Имате нужда от правилната функция, специален елемент от таблицата на съобщение и, разбира се, в зависимост прототип. Identifier (в този случай IDM_ZOOM) се прилага същата, както за отбора. Тук е необходимо да се добави към файл с код за "вид" клас:

    ON_UPDATE_COMMMAND_UI (IDM_ZOOM, OnUpdateZoom) END_MESSAGE_MAP ()

    нищожен GMyView :: OnUpdateZoom (CCmdUI * pCmdUI)

    pCmdUI-> SetCheck (m_bZoomed); // in_bZoomed - променлив елемент клас

    Целта на този клас може да бъде всяко меню на Windows, включително и от менюто най-високо ниво и падащото меню свързани. Най-често, изрично не когато ти се обадя Създаване на функцията за дограма, с предмета SMepi създаден ресурс от менюто е свързан директно с този прозорец. Държавите-функция на клас CWnd GetMenu връща указател към временна SMepi. След получаването на тези указател, можете да получите безплатен достъп до менюто, и можете да го промените.

    Можете да определите менюто на ресурса и след това го променят в периода на програмата. Ако е необходимо, по време на изпълнението, можете да създадете всичко от менюто изцяло, без да се използват ресурси във всеки случай, за това полезно характеристики като клас държавите SMepi като ModifyMenu, InsertMenu и DeleteMenu. Всеки един от тях работи с отделен елемент от менюто се определя от идентификатора или индексът на своята позиция в менюто.

    меню Object всъщност се състои от вложени под-структура. член функция GetSubMenu връща указател към обект SMepi представляваща падащото меню в основен обект SMepi. Функция SMepi :: GetMenuString връща текста в елементите на менюто, изброени или на индекса, или чрез ID команда търси навсякъде в менюто, включително вградена система Във втория случай.

    Създаване на контекстни менюта

    2. Въведете име за най-лявата най-високо ниво елемент и добавяне на командата на контекстното меню в контекстното меню резултат.

    3. Поставете процесора WM_CONTEXTMENU съобщения в клас "вид" или в друг прозорец клас, получи съобщение от бутоните на мишката, и да го програма, както следва:

    нищожен CMyView OnContextMenu (CWnd * pMnd, CPoint точка)

    TMP_RIGHTBUTTON, точка х, у точка, това);

    команди контекстното меню може да бъде съпоставена с манипулатори, използващи Клас-съветника по същия начин, като команда в прозореца на менюто рамка.

    Контрол панел и прилагането рамка

    Лентата с инструменти (Toolbar) - обект CToolBar клас. и лентата на състоянието (статус бара) - CStatusBar обект клас. И двата класове деривати CControlBar. и че от своя страна - от CWnd. CControlBar клас поддържа прозорците панели на контрол, поставени в рамка прозорец. Прозорците на тези панели автоматично се настройват си размери и положение при мащабиране и преместване на дограма. Рамката за прилагане създава и изтрива тези обекти и техните прозорци. AppWizard генерира код контролни панели за новия клас, рамката на прозореца, се съхраняват във файлове и MainFrm.cpp MainFrm.h на. В типичен заявление CToolBar SDI-обект е в горната част на клиентската област CMainFrame. на CStatusBar обект - в дъното. Между тях е, прозорчето.

    Ако AppWizard генериран код контролни панели за това приложение, потребителят може да активира или деактивира панели команди от менюто Изглед. Когато деактивирате панел изчезва и се преизчислява размера на прозореца на оглед. Въпреки че някои общи (както е описано по-горе) имоти, обекти "Toolbar" и "Онлайн състояние" независими един от друг и да имат различни характеристики.

    Лентата - ред хоризонтално (или вертикално), разположен графични бутони, понякога комбинирани в групи. Разбивката на групи се извършва от софтуер, според изображенията бутона Бутони съхраняват в популярни растерни изображения във вътрешността на средствата за кандидатстване. Ако щракнете върху бутона, той ще изпрати команда съобщение, като менюта и клавишни комбинации. За да актуализирате състоянието на бутоните са манипулатори командва актуализира потребителския интерфейс, причинена от рамката на заявление за промяна на външния вид на бутони

    Лента с инструменти на растерни изображения

    Може да изглежда, че всеки бутон върху панела на вашите растерни инструменти, но в действителност за целия растерни изображения един панел. Тя се разпределят към всеки височина бутон клетка 15 и ширина 16 пиксела. Рамката на приложение дава възможност за теглене на бутони граници и да го промени с цвета на фона на бутона за показване на текущото състояние.

    Всеки бутон може да бъде в следните щати

    Бътън е най-новата в низ

    Командата бутон може да бъде или ( "натиснат" / "натиснат") или флаг ( "инсталиран" / "изчисти"). От лентата с инструменти Стандартни, образуван от рамките на приложението, всички бутони - екип.

    Toolbar и командни пунктове

    Когато потребителят кликне върху бутона в лентата с инструменти, командно съобщение се генерира. Тя се доставя като командно съобщение от менюто.

    Най-често в лентата с инструменти бутон дублира менюто. Например, един бутон със снимка на дискета върху лентата с инструменти Стандартни (образувана от рамка за кандидатстване) е равностойно на Save команда от менюто File. И двете генерира команда ID__FILE_SAVE. Субектът, който е получил команда съобщение, без значение, тя генерира едно натискане на бутон в лентата с инструменти или като изберете командата от менюто.

    Въпреки това, бутоните на лентата с инструменти не могат да бъдат равностойни на менюто. В този случай, се препоръчва да се дефинира клавиши за бърз достъп, потребителят може да активира тази команда от клавиатурата или чрез Windows-макроса. Независимо от съответния бутон в лентата с инструменти, команди на менютата, или не, като се използва ClassWizard, можете да определите, работещи с командата съобщения и актуализира интерфейса на командния ред.

    На лентата с инструменти, свързани растерна графика на ресурси и свързаните ресурси, лентата с инструменти на RC-файл, който дефинира команди на менюто, свързани с бутоните. И растерни изображения и TOOLBAR ресурс имат един и същ идентификатор - обикновено IDR_MAINFRAME. Ето съдържанието на лентата с инструменти на ресурсите, sgeneririrovannoe AppWizard:

    IDR_MAINFRAME TOOLBAR сменяема 16, 15

    SEPARATOR константи позволяват отделни групи бутони един от друг. Ако броят на бутоните в лентата с инструменти на растерна графика на надвишава броя на елементите в ресурса (без разделители), допълнителни бутони не се показват.

    Актуализиране на потребителския интерфейс на лентата с инструменти

    товарачи за съобщения се актуализира потребителския интерфейс се използва за деактивиране на командата на менюто, или да ги маркират проверени. Тези процесори са подходящи и за бутоните на лентата с инструменти. Ако такъв манипулатор призовава държавите функция CCmdUI :: Активиране на FALSE параметър, съответният бутон е забранен (става избледнял) и вече не отговаря на кликвания на мишката.

    Функция CCmdUI :: SetCheck слага отметка до командата на менюто, лентата с инструменти бутон за изпълнение на свойствата на знамето. След като нарече SetCheck с бутона вариант 1 "пръчки" в изключено състояние и с параметъра 0 - връща към оригинала, "натиснат" състояние.

    товарачи за съобщения се актуализира потребителския интерфейс на командите на менюто се наричат ​​само когато се представя елементи от съответното меню. Но лентата с инструменти винаги присъства на екрана. Възниква въпросът, когато водачът се нарича актуализации интерфейс? За състоянието на бутоните може да се актуализира постоянно, отговорниците се наричат ​​в бездействащите приложения от време. Ако опцията в менюто и бутон в лентата с инструменти използва същия манипулатор е задействана и когато не работи, а когато отворите менюто.

    Пояснения (пояснения) намерени в различни. Windows-базирани приложения, включително тези в Visual C ++. Ако поставите курсора на мишката върху лентата с инструменти бутон и го оставете там, след определен период от време до бутона ще бъде малък прозорец с текст.

    Статус Window линия не приема въвеждане от потребителя и не генерира командни съобщения. Неговата задача - просто покаже работещ текст на програмата в съответните секции.

    В лентата за състоянието поддържа два типа секции текст: линията на съобщение, както и индикатори. За да използвате лентата за състоянието, за да се покаже информация, специфична за конкретното приложение, първо изключете стандарт лентата на състоянието, която показва съвети за елементите от менюто и доклади за състоянието на клавиатурата.

    Определяне на участъци от лентата на състоянието

    Раздел в лентата на състоянието се определя от статичен масив от показатели. ArrWizard което създава MainFrm.cpp файл. Постоянно сечение ID_SEPARATOR комплекти линията на съобщението, както и други константи са идентификатори низ ресурс и да определи раздел показател.

    Държавите функция CStatusBar :: SetIndtcators. наречено след получени заявления клас дограма, в резултат на лентата на състоянието, в съответствие със съдържанието на множество показатели.

    В този раздел е показано на ред, определен от (динамично) програма. За да определите текст на съобщението, трябва първо да получат достъп до бар обект за състояние, а след това се обадете на член функция CStatusBar :: SetPaneText. минаваща го секцията индекс. Индекси започват с 0, нулевата точка - крайно леви, блок 1 се намира в дясно и т.н.

    Следният код фрагмент е част от член на класа функция "изглед". Забележка: тук ние първо трябва да се издигне до нивото на заявлението, а след това се върнете към основния прозорец-рамката:

    CMainFrame * pFrame = (CMainFrame *) AfxGetApp () -> m_pMainWnd;

    CStatusBar * pStatus = pFrame-> m_wndStatusBar;

    pStatus-> SetPaneText (0, "низ съобщение за първата част");

    Обикновено дължината на секцията за съобщения е точно една четвърт от ширината на екрана. Въпреки това, първата секция (индекс 0) променлива дължина; е не по-малко от една четвърт от ширината на екрана може да се увеличи и ако има място в лентата на състоянието.

    Индикатор за състоянието на раздел, свързан с един ред на ресурса, който се показва или скрива в съответствие с логиката на манипулатора. Индикаторът показва идентификатора на низ на ресурсите, както и същ идентификационен номер се използва за разпространение на интерфейса на актуализация съобщение. Caps Lock индикатор се обработват в прозорците на клас-рамка с помощта на съобщенията по-долу е елемент на таблица и манипулатор (Активиране на функция включва LED ако Caps Lock е включен режима):

    ON_UPDATE_COMMAND_UI (ID_INDICATOR_CAPS, OnUpdateKeyCapsLock)

    нищожен CMainFrame :: OnUpdateKeyCapsLock (CCmdUI * pCmdUI)

    pCmdUI-> Активиране (:: GetKeyState (VK_CAPITAL) 1);

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

    Статус Бар Control

    Standard лентата на състоянието се определя AFX_IDW_STATUS_BAR прозорец идентификатор дъщерно дружество. Това беше неговата рамка на прилагане се стреми да извлече намеци за елементите от менюто. товарачи за съобщения се актуализира потребителския интерфейс използва три идентификатор низ ресурси за индикаторите за състоянието клавиатура на базовия клас, рамката на прозореца: ID_INDICATOR_CAPS, ID_INDICATOR_NUM и ID_INDICATOR_SCRL. За да контролира лентата на състоянието, което трябва да се използва друг идентификатор на прозореца на дете, както и други константи за индикатори.

    Идентификатор за лентата на състоянието на прозореца се определя на CstatusBar кол :: Създаване на функцията OnCreate член на извлечения клас, рамката на прозореца. Тази функция се съдържа в MainFrm.cpp файл. генерирана от AppWizard. идентификатор прозорец - трета Създаване функция и по подразбиране е AFX_IDW_STATUS_BAR.

    За да зададете идентификатор, сменете обаждането

    на m_wndStatusBar.Create (това, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, ID_MY_STATUS_BAR)

    Стандартен изглед меню, образуван от рамките на приложението, активира или деактивира показването на лентата на състоянието. Тази логика се реализира с помощта на кода на прозорците ID AFX_IDW_STATUS_BAR, които също трябва да се промени. В извлечен клас, дограма пишат елементите на масата за съобщение и манипулатори за ID_VIEW_STATUS_BAR на екип и съобщения, свързани с актуализацията на потребителски интерфейс. ID_VIEW_STATUS_BAR - е ID Статус елемента от лентата с менюта. Дръжки в новия клас подменя стандартен манипулатор за CFrameWnd базовия клас.

  • Какво е менюто?
  • Какво видове меню, нали знаеш?
  • Какво е таблото?
  • Какво е лентата на състоянието?
  • Коя секция има лентата на състоянието?
  • Какво клас е отговорен за работата с лентата на състоянието?
  • Какво клас е отговорен за работа с ленти с инструменти?
  • Какво клас е отговорен за менюто?