ПредишенСледващото

Нека да видим как да се създаде приложение с диалога като главния прозорец, като се използва компютърен дизайн приложения MFC AppWizard. Когато създадете проект използването на този инструмент, трябва да отговорите на няколко въпроса, които определят вида и възможността за създаване на приложения.

Създаване на шаблон заявление

Първо трябва да изберете типа на вашата кандидатура от посочения списък: "Единен документ" (приложение с единичен прозорец интерфейс), "Множествена документ" (с много прозорци приложение) или "Диалог на базата" (заявление на базата на диалоговия прозорец без основния прозорец). След като изберете тип заявление "Диалог на основата" на следващия екран панел, предназначен за определяне на основните свойства на заявлението.

В този панел, можете да укажете дали желаете да създадете диалогов прозорец за информация приложение, помощ подсистема, триизмерни контролите, възможността за използване на OLE технология и комуникация чрез TCP / IP протокол. Можете също да зададете заглавието на диалоговия прозорец основен.

В последния диалогов прозорец, можете да посочите имената на генерираните класове система AppWizard приложение.

След идентифициране на всички работните качества на MFC AppWizard ще създаде проект, който можете веднага да получите разработването и прилагането е готов за пускане. След стартиране на приложението се появява диалогов прозорец на екрана с два бутона "ОК" и "Отказ" и статичното поле.

проект DLG включва редица файлове, създадени AppWizard система (вж. Приложение 1). Помислете за целите на тези файлове:

Основният клас за кандидатстване

CDlgApp главния клас приложение е определен в dlg.h файла и изпълнява в dlg.cpp файл.

За CDlgApp описан клас конструктор без параметри. Този конструктор се използва, когато работи на заявлението, за да създадете CDlgApp клас обект.

В допълнение към проектанта, в CDlgApp клас отменя метода InitInstance на базовия клас CWinApp на. Всеки път, когато стартирате копие на заявлението този метод се нарича. Това е единственият метод на основния клас, който трябва да бъде отменено. Средства MFC AppWizard изпълнява подтиснатия метод InitInstance за различни видове потребителски интерфейс (с един прозорец, няколко прозореца на базата на диалог) по различни начини.

После се обади DoModal метод за DLG на обект клас CDlgDlg. Той създава диалогов прозорец и я показва на екрана. Стойност, предоставена от DoModal. Тя може да се използва за анализ на резултатите от потребителя с интерактивен панел.

Основен предмет приложение

В dlg.cpp файл декларират глобален обект на основния клас приложения. Беше със създаването на този обект и започва работа приложения.

Задача на клас CWinApp (или клас, получен от него) е включен във всички приложения, изградени с помощта MFC AppWizard, независимо от потребителския интерфейс на тази заявка.

Таблица клас Съобщения

Таблица клас CDlgApp съобщение е създаден с помощта на AppWizard, се състои от макроси и BEGIN_MESSAGE_MAP END_MESSAGE_MAP. Между тях макро определяне на съобщения, обработвани от този клас. Първоначално само една таблица се определя командно съобщение като идентификатор ID_HELP. От своя лечебен метод се нарича OnHelp база клас.

Необработени съобщенията се предават на обработката на базовия клас CWinApp на. както е посочено във втория параметър макро BEGIN_MESSAGE_MAP.

диалоговия прозорец Class

диалогов прозорец основен клас е обявен в dlgDlg.h файла и изпълнява в dlgDlg.cpp файл.

CDlgDlg клас наследява от базовия клас CDialog а. дефиниран в клас библиотека MFC. На строителя на клас има един незадължителен параметър pParent, използвана за предаване на индекса на основния прозорец на приложението. Тя изпълнява ролята на главния прозорец диалоговия самата кутия, така че параметър pParent не се използва.

Почти всички приложения, свързани икона, за да бъдат показани чрез свеждане до минимум приложение. Обикновено тази икона се определя в основния прозорец заявление за регистрация на класа. DLG заявление не представлява основния прозорец - вместо да го използва диалоговия прозорец. Ето защо, иконата на картата не е автоматично и, следователно, че е необходимо да се управлява (идентификатор пиктограми m_hIcon определени в класа CDlgDlg) за картографиране.

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

В тялото на конструктор е AFX_DATA_INIT единица. Това ще добави ClassWizard инициализация кодови елементи данни CDlgDlg клас.

Конструкторът също инициализира m_hIcon, писане в идентификатор икони му IDR_MAINFRAME:

AfxGetAp метод връща указател към обекта на основния клас заявление (в този случай - указател към обекта theApp).

В диалоговия прозорец е само един бутон и не е свързан с тях променливи. Въпреки това, метод DoDataExchange преодоляно. В действителност, тя не извършва никаква работа. Единственото нещо, което той прави - го нарича метод DoDataExchange базов клас CDialog на.

Ако диалогов прозорец за добавяне на нови контроли и да ги свържете със средства ClassWizard CDlgDlg елементи клас на данни, устройството ще бъде поставен AFX_DATA_MAP призовава DDX функции и ДДВ, необходими за изпълнението на обмен на данни.

Таблица CDlgDlg клас съобщение съдържа три макроси, които извършват обработка WM_SYSCOMMAND съобщения, WM_PAINT и WM_QUERYDRAGICON. Те са разположени в AFX_MSG_MAP блок, така че те да бъдат управлявани с помощта ClassWizard.

Когато отворите диалоговия прозорец при използване на функцията DoModal, Създаване или CreateIndirect. диалогов прозорец, в момента се прехвърлят WM_INITDIALOG съобщение. Директен достъп до функцията за диалог не е така. Неговото изпълнение се съдържа в класа CDialog.

В отговор на съобщението WM_INITDIALOG наречен метод OnInitDialog. таксува като един виртуален метод CDialog клас. Този метод се нарича непосредствено преди изхода на панела на екрана.

MFC AppWizard при прилагането на този метод са добавени няколко стъпки: добавяне на ред в менюто на системата за показване на помощта за прилагането, както и чрез метод SetIcon на избиране на иконата на приложението.

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

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

Този метод се извършва по два параметъра - идентификатора на лентата с менюта на системата, която е избран от потребителя, както и параметър, съдържащ координатите на мишката, когато изборът се с мишката.

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

Вложката за разлика от редовната прозорец не съдържа вградени икони на приложения дисплей. Самото приложение, трябва да се грижи за показване на иконите - надделява метода OnPaint. При този метод, базов клас се нарича OnPaint метод, или самото приложение показва иконата, ако в момента сведени до минимум.

Потребителят може да "влачите" иконата на минимизиран заявлението. Ако потребителят извършва действие с иконата на прозореца, за клас, който не е определен икона, а след това се нарича OnQueryDragIcon метод. Този метод трябва да се върне ID на мишката, който ще бъде показан по време на икона прозорец "плъзгане и пускане".

подтиснатия метод OnQueryDragIcon The означава AppWizard просто връща идентификатора на иконата на приложението.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!