социалност свят политика новини забавления статии филми музика
Рекламни статии
Уеб дизайн и изработване на уеб страници и сайтове от Уеб-Дизайн студио Уеб дизайн България ®

Интернет онлайн каталог класация на сайтове. Добави сайт във www.TheRating.net

Оптимизация на сайтове и търсещи машини от SEO MО оптимизация на сайт

Образователни материали за компютри и компютърни технологии и Интернет технологии, Web, софтуер и хардуер, Интернет и локални мрежи и много други.

Българско онлайн издание за Web 2.0 Дизайн и SEO оптимизация на сайтове за търсачки, Интернет маркетинг и реклама.

Интернет новини за мобилни технологии, Web дизайн, компютри и информационни технологии.
Имате нужда от уеб сайт? Уеб Дизайн България извършва уеб дизайн, изработка на качествени сайтове и страници в Интернет. Безплатна SEO оптимизация за клиентите, отстъпки за реклама.

Начало arrow Компютри и Интернет arrow Компютри arrow Прозоречни менюта в MFC (Microsoft Foundation Class Library)

Прозоречни менюта в MFC (Microsoft Foundation Class Library)

Автор Socialnost.com   
сряда, 22 септември 2010
Менюто е съвкупност от команди и настройващи параметри в програма, организирана във вид на списък или йерархия от списъци създадена с цел бърз и лесен достъп до потребителя. Отделните елементи на менюто се нари1ат избор(option) или единица (item). Менюто обикновено се поставя с едно действие на потребителя. Изборите обикновено са текстови и се посочват от мишката,стрелки от клавиатурата или буква от тяхното име. Когато менюто има голям брой избори те се групират тематично и се показват само имената на темите. При избор на тема се показва нейното под меню. Така се получават падащи (pull-down, drop-down),менюта или каскадни (излизащи настрани). Скритите менюта появяващи се при положение на потребителя се наричат изскачащи (pop-up). Ако те имат различни избори според мястото , където изскачат се наричат контекстни. Един основен прозорец на приложение може да има лента с прозоречно меню, горния ляв ъгъл системно меню, а може да има и контекстно меню викащо се с десен бутон на мишката. От гледна точка на програмата прозоречното меню се нарича приложно меню от най – високо ниво а, под менютата се наричат падащи (drop-down) менюта. На всеки избор от менюто съответства цяло число наречено идентификатор на меню единица (item - ID). В MFC има клас CMenu за работа с менюта. Този клас има публична член – данна hMenu , която е манипулатор на менюто.
1.    Прозоречно меню в програмата се записва:
А)програмно – създава се обект на CMenu ч/з ф-циiтe CreateMenu(),InsertMenu() и др. се създава празно меню и последователно се прибавят неговите единици.
Б)програмно – индиректно – дефинират се и се инициализират серия от записи struct на библиотеката APIWin 32, които дефинират структурата и изборите на менюто и ч/з член-ф LoadMenuIndirect() се зарежда в прозореца и се показва.
В)чрез ресурсния редактор – се изграждат ресурси на менюто. Тези ресурси имат идентификатор който се използва за да могат ресурсите да се свържат с обект на CMenu. Когато създаваме начално приложение с Аpp Wizard в основния му прозорец има меню с ресурсен идентификатор IDRMainFrame . един начин да се зареди меню от най- високо ниво в основния прозорец е да се използва функцията CFrameWnd::Create(), която създава самия прозорец Create(NULL”My application”WS_OVERLAPPEDWINDOW,rectDefalt,NULL,MAKEINRESOURCE(IDR_MAINFRAME)).Друг начин с функцията CFrameWnd::LoadFrame() – задава прамка на прозореца LoadFrame (IDR_MAINFRAME.WS_OVERLAPPEDWINDOW,NULL,NULL)
Г)да се създаде обект на CMenu menu;
Menu.LoadMenu(IDR_MAINFRAME);
SetMENU(&menu); DrawMenuBar();
Menu.Detach(); - развързваме менюто от обекта ,менюто става независимо
CMenu menu Short, menuLong;
menuShort.LoadMenu(IDR_SHORTMENU);
menuLong.LoadMenu(IDR_LONGMENU);
if(bMenuType) – според някакво условие
SetMenu(&menuLong) зареждаме
Else SetMenu(&menuShort); DrawMenuBar();
2.Отговаряне на изборите в менюто – когато потребителя избира от менюто Window генерира серия от съобщения(sms-смс) WM_INITMENU – потребителя е щракнал в/у избор от най – високо ниво
WM_INITMENUPOPUP – появява се преди да се покаже падащото меню
WM_MENUSELECT – появява се при посочване, но без избиране на меню единица
WM_COMMAND – при избор на меню единица
Носи във себе си идентификатор на меню 1. чрез клас Wizard можем да създадем функция на това съобщение void CMainFrame::OnCommand(WPARAM wParam,LPARAM lParam)
{ if (wParam==ID_FILE_OPEN){//обработка на File->Open}}
Друг начин да отговорите на избор в меню е в ClassWizard да свържем ID-то на избора с действието (ID_FILE_OPEN със ON_COMMAND) и ще има вида
Void CMainFrame::OnFileOpen(){//обработка File->Open}
Понякога е удобно да се обработят няколко подобни избора с една и съща функция
Color
Red   ID_COLOR_RED
Green  ID_COLOR_GREEN
Blue   ID_COLOR_BLUE
UINT nID=(UINT)LOWORD(getCurrentMessage()->wParam);взимаме ID-то на избора =>switch(nID)
{case ID_COLOR_RED;//обраборка на Color->Red
Break;
Case ID_COLOR_GREEN;}}
Ако ID –тата имат поредни стойности то можем да направим една обща функция като свържем ID-то с най-малка стойност и действието ON_COMMAND_RANGE
Void CMainFrame::OnColor(UINT nID){
UINT nCurrentColor= nID_ID_COLOR_RED;
Switch(nCurrentColor){
Case 0; break case;}}
3.Промяна на избор на меню в MFC (Microsoft Foundation Class Library) – един начин за да се промени избор на меню е чрез обект на менюто. Например поставянето на отметка пред избора Red става по следния начин CMenu *pMenu=GetMenu();
pMenu->CheckMenuItem(ID_COLOR_RED,MF_CHECKED)
най – добре промените в падащото или изскачащото меню е да се извърши в момента на тяхното показване, тогава се генерира смс WM_MENUPOPUP, за което можем да направим функция.
Void CMainFrame::OnInitMenuPopup(CMenu *pMenu Pop Up, UINT nIndex,BOOL b SysMenu){if (!b SysMenu &&(nIndex==COLOR_MENU_INDEX)){
pMenuPopup->CheckMenuItem(ID_COLOR_RED,MF_CHECKED);
pMenuPopup->CheckMenuItem(ID_COLOR_GREEN,MF_CHECKED);
}}
nIdex – индекс на менюто от най – висок ранг
bSysMenu – системно меню на прозореца.
Друг начин да свържем ID-то на съответния избор с действието On_UPDATE_COMMAND. Създава се функция
Void CMainFrame::OnUpdateColorRed(CCmdUT*pCmdUI->SetCheck());}-задаваме пред Red да има отметка.
pCmdUI – указател сочещ обект към избора на менюто. Този обект има следната член-ф
CCmndUI::SetCheck() – слага или маха отметка към избора
::Enable()- активира или деактивира избор
SetRadio() – слага или маха точка предименюто
SetText() – променя текста на менюто

Любопитно: Преди да продължим с менютата и прозорците в Microsoft Foundation Class Library, научете повече какво е кеш памет и кеширане на информация и данни в компютърните системи.

4.Програмно запълване или модифициране на менюто – когато менюто зависи от състоянието мойе да се зададе програмно и да се попълни с единици.
CMenu menuMian; - създаваме обекта на главното меню
menuMain.CreateMenu(); - то е празно
CMenu menuuPopup();
menuPopup.CreateMenu(); - празно под меню
menuPopup.AppendMenu(); - добавяме елементи в подменюто
(MF_STRING,ID_TOOLS_ADD,”&Add”);
menuMain.AppendMenu(MF_POPUP,(UINT)menuPopupDetach(),”&Tools”); - освобождаваме менюто
menuPopup.CreateMenu() – създаваме ново подменю
menuPopupAppenMenu(MF_STRING,ID\_SHAPE_CIRCLE,”&Circle”);
menuMain.AppendMenu(MF_POPUP,(UINT)menuPopup.Detach(),”&Shape);
След като създадем структурата с SetMenu го свързваме с прозореца, DrawBar – рисуваме го в прозореца и освобождаваме обекта с Detach();
SetMenu(&menu Main); DrawMenuBar();
Menju.Main.Detach();
Класът CMenu има следните ф-ции за модификации на менюто
CMenu::AppendMenu() – вмъква 1-ца в края му
    ::InsertMenu() – вмъква 1-ца на оказаното място
    ::ModifyMenu() – променя текста или друга характеристика
     ::DeleteMenu() – изтрива избор от менюто и под меню свързано с този избор
    ::RemoveMenu() – изтрива избор от менюто
CMenu *pMenu=getMenu() – този указател да сочи менюто
pMenu->DeleteMenu(1,MF_BYPOSITION);
pMenu->DeleteMenu(IP_SHAPE_CIRCLE,MF_BYCOMMAND);
Модификация на избор
pMenu->ModifyMenu(ID_TOOLS_ADDMF_STRING\MF_BYCOMMAND,ID_TOOLS_MUL,&Multiple);
 
Следващо >


Търсене в сайта

RSS новини

News.bg - Начало

  • По време на вечерята в петък с широк консенсус са били обсъдени темите за Иран, ядрените амбиции на Северна Корея, и размириците в Сирия

     



    Съдбата на Еврозоната - в дневния ред на срещата на Г-8 По време на вечерята в петък с широк консенсус са били обсъдени темите за Иран, ядрените амбиции на Северна Корея, и размириците в Сирия


  • Участие са заявили 13 национални, 29 регионални и 22 общински музея

     



    Нощ на музеите са осми път в София Участие са заявили 13 национални, 29 регионални и 22 общински музея

     Нощ на музеите са осми път в София


  • Това е изключителен успех за българската природозащита

     



    Първо гнездо на белоглави лешояди в Стара планина от 50 г. насам Това е изключителен успех за българската природозащита

     Първо гнездо на белоглави лешояди в Стара планина от 50 г. насам


  • Велико Търново, Русе, Търговище, Разград, Силистра, Шумен, Добрич, Варна, Бургас, Сливен, Ямбол, Хасково и Кърджали

     



    Жълт код за обилни валежи е обявен в 13 области Велико Търново, Русе, Търговище, Разград, Силистра, Шумен, Добрич, Варна, Бургас, Сливен, Ямбол, Хасково и Кърджали

     Жълт код за обилни валежи е обявен в 13 области


  • Строги рестрикции и солени глоби наложиха местните власти

     



    Квебек забрани студентските протести Строги рестрикции и солени глоби наложиха местните власти

RSS съдържание

Онлайн списание Мастило - новини, литература, култура, събития, свят...

Резервации и продажба на самолетни билети от туристическа агенция номер 1 в България Aerotour MM

Полезна информация за всички - за дома, домакинството, почистване, практично, здраве...

Енциклопедия Окултизъм и езотерика. Наука, психология, социалност и култура

Енциклопедия Онлайн директория - Добавете Вашия уеб сайт в каталога

Информационен Интернет уеб сайт за Технологии, икономика, политика и обществени науки.

Онлайн информационно Интернет списание за различни теми от съвременния живот.

® 2012 Socialnost.com   Социалност - български сайт за обществения живот, политика, здравеопазване и горещи теми | Add site URL in Web