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

Най-често, за да се създаде ново приложение MFC е поверена Wizard (MFC App Wizard). Съветникът генерира основния скелет приложение, което по-късно попълване на правилния код, в крайна сметка получаване на пълно заявление.

Първи шаблон за нашата бъдеща програма, веднага хваща окото много код, който е вид изглежда малко трудно, и отчасти неразбираеми, плюс всичко, винаги присъстващ чувството, че една прилична сума на код е скрито от очите ни. Аз предлагам да се хвърли светлина върху мистериозните части на код, който генерира съветника се грижат за нас. И в същото време и да видим как сами, без помощта на магьосник, създавате приложение MFC.

Така че, малко скрит код

Всеки 32-битова Windows приложение има два основни елемента: WinMain функция и WndProc. Вашата програма трябва да бъде най-малко един WinMain, плюс WndProc за всеки прозорец. Въпреки, че MFC и създава за тях за вас, но все още имате идея за тях е желателно.

Основната цел на WinMain - е да стартирате приложението. След като приложението се изпълнява, Windows веднага поставя вашето съобщение в опашката съобщение. За да получите тези съобщения от операционната система и да ги обработва, WinMain прави три API повикване. Първо - това е GetMessage, чиято задача е да получите съобщението. Тогава TranslateMessage да подготви необходимите реформи на съобщението. И zvklyuchenie WinMain призовава DispatchMessage, който говори малко WndProc изпратите съобщение на обработката на операционната система.

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

Най-простият MFC приложение: По-малко от 20 реда код

На следващо място, ние считаме, най-простата структура на заявление MFC. Тъй като нашата задача е да се осигури присъствието в WinMain кандидатстване и WndProc, е необходимо да наследи тези функции класове MFC.

клас молба ние ще наследи от MFC CWinApp клас. CWinApp всички необходими функции и променливи за инициализация, като се започне и приложения на затваряне. CWinApp съдържа указател m_pMainWnd, който сочи към обект клас на главния прозорец. Всеки MFC полагане има един и само един обект, пряко наследена от CWinApp. В примера по-долу, това се нарича "CMyApp".

прозорец клас услуга ще наследи от CFrameWnd. CFrameWnd също притежава всички необходими функции и променливи, необходими за създаване и управление на прозорци. Моля, имайте предвид, че действителното създаване на обекта на прозореца не води до пряка създаване на прозорците, но само съдържа функция за създаване () изисква да се създаде прозорец.

Нека да видим какво ще се случи, когато стартирате програмата ни. Тези стъпки могат да бъдат проследени в примера по-долу:

WinMain започва да работи от гледна точка на: ап CMyApp; Създаден CMyApp тип обект, наречен "приложение". Приложението съдържа всички променливи и функции CWinApp, които са необходими, за да започне и да завърши нашата молба на страните.

След това, WinMain призовава InitInstance функция на приложението ни (). InitInstance () създава нов обект с CMyWnd m_pMainWnd = нов CMyWnd;

CMyWnd конструктор разговори Създаване на функция (), което създава инстанция на прозореца, но не го показва.

Следваща InitInstance () функция показва команден прозорец m_pMainWnd-> ShowWindow (m_nCmdShow);

WinMain призовава функция Run (), която изпраща съобщения до останалата част на приложението.

Но всъщност собствен пример:

Това е, което ние получаваме след съставянето на код и работи:

MFC под капака или създаването на приложения, без съветника MFC приложение

В действителност, на прозореца ще бъде повече.

Единична интерфейс Документ (Single Документ) прилагане

Кодът, който се генерира при създаване на единно заявление магьосник документ (SDI), една по-сложна на пръв поглед, но всичко работи на същите принципи. Ние също наследи един клас от CWinApp. И ние наследи всичко от същия клас за управление на прозореца от CFrameWnd. Въпреки това, в този случай, класът за управление на прозореца ще се нарече CMainFrame.

Нашият клас заявление също има функция InitInstance (), но изглежда, че е малко по-сложно. В допълнение, тя съдържа следните редове:

Тук обект на кандидатстване създава указател към един-единствен документ шаблон и го свързва с нов обект шаблон един документ. Виждаме, че в CSingleDocTemplate конструктор се предава четири параметри. Първият тип цяло число - Този ресурс ID IDR_MAINFRAME. Следващите три параметри показват класовете за документ, рамката и гледката. Тогава показалеца към новата CSingleDocTemplate добавен към списъка на шаблони на документи, създадени от обекта за кандидатстване. (В едно приложение SDI, само един шаблон.)

IDR_MAINFRAME ресурс съдържа:

  • икона приложение.
  • меню приложение.
  • Таблица ускорители за менюто.
  • String инструмент. документ ред е разделен на седем части, всяка разделени със знака "\ Н":
  • Наименование на основния прозорец на прозореца. заглавие Window възлага на новия документ. Ако бъде пропуснат, стойността по подразбиране се използва "Untitled".
  • Описание на вида на документа в заявление MDI. Този низ не се използва в приложение SDI. декларация документ тип, разширението на файла за документа по подразбиране, например, "My Big програма (*. МВР)."
  • разширение трибуквен за вида на документа, като например ".mbp"
  • Името без интервали които идентифицират вида на документа в регистъра.
  • Подробна име тип документ, например, "My Big Програма Документ". Нещо като тази линия може да изглежда така: "Моята голяма програма \ н \ н \ nMy Big програма (* MBP.) \ N.mbp \ nBigProgram \ nMBP документ."

заключение

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

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

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

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