TODO: Add your message handler code here 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

TODO: Add your message handler code here

Поиск

// TODO: Add your message handler code here

В этом обработчике добавляем:

if (m_thisThreadParams.pSolver)

((CMainFrame*) GetMDIFrame())->

    m_wndStatusBar.SetPaneText(1,"РАСЧЕТ");

else

((CMainFrame*) GetMDIFrame())->

    m_wndStatusBar.SetPaneText(1,"");

 

На данном этапе плучено приложение для решения задач из текстового файла, запуск и остановка рабочего потока производится «горячей» клавишей, в окне состояния отображается

 

 

Меню и их команды

 

Объект меню Windows инкапсулируется классом CMenu (потомок CObject), представляющим все необходимые функции работы с меню. Однако нам нет необходимости пользоваться этим классом непосредственно, т.к. это за нас сделает оболочка Visual C++.

 

Обычно для окна-рамки определяется ресурс меню, загружаемый при создании этого окна. Ресурс меню полностью определяет начальное состояние меню: какие-то команды могут быть отключены, помечены галочкой или сгруппированы с помощью разделителей. Например, для меню главного окна на время отсутствия дочерних окон, ресурс в нашем приложении имеет вид (см. файл “optimizer.rc”):

 

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "&File"

   BEGIN

   MENUITEM "&New\tCtrl+N",           ID_FILE_NEW

   MENUITEM "&Open...\tCtrl+O",       ID_FILE_OPEN

   MENUITEM SEPARATOR

   MENUITEM "Recent File",            ID_FILE_MRU_FILE1, GRAYED

   MENUITEM SEPARATOR

   MENUITEM "E&xit",                  ID_APP_EXIT

END

POPUP "&View"

BEGIN

   MENUITEM "&Toolbar",               ID_VIEW_TOOLBAR

   MENUITEM "&Status Bar",            ID_VIEW_STATUS_BAR

END

POPUP "&Help"

BEGIN

   MENUITEM "&About NotePad...",      ID_APP_ABOUT

END

END

 

Ключевое слово PRELOAD здесь указывает, что меню должно загружаться в память при исполнении программы, а DISCARDABLE – что можно изменять меню в программе, не изменяя ресурс.

 

Само тело меню заключено между операторными скобками BEGIN и END. Как видно из текста, элементы меню бывают двух видов: POPUP - это целое окно (например, раскрывающийся перечень, который появляется, когда вы открываете меню File); MENUITEM – это единичный элемент меню, после объявления которогов кавычкахзаписана символьная строка, изображаемая в меню. И, наконец, автоматически объявляется константа, ассоциированая с данным пунктом меню в файле “resource.h”. Когда пользователь выбирает конкретный пункт меню, его константа упаковывается в параметры сообщения WM_COMMAND и посылается обработчику.

 

Редактор меню Visual C++ позволяет редактировать ресурс меню в режиме WYSIWYG. Для каждой команды меню открывается диалоговое окно, в котором Вы задаете все характеристики этой команды.В дополнение к стандартным возможностям меню Windows библиотекаMFC поддерживает строки подсказки, появляющиеся в строке состояния окна-рамки при выборе в фокус соответствующего элемента меню. Данные подсказки – строковые ресурсы, имеющие те же идентификаторы, что и команды меню. В редакторе меню эти строки неразрывно связаны с пунктами меню.

 

Создавать меню с нуля нет необходимости – в MFC –библиотеке уже определено несколько полезных меню вместе со всеми функциями- обработчиками команд. Состав меню и набор обработчиков командных сообщений зависят от параметров, выбранных в AppWizard. В нашем MDI-приложении имеется два типа меню главного окна: меню, присутствующее при наличии дочерних фреймов (зависит от типа фрейма, активного в данный момент) и основное меню, замещающее его при отсутствии дочерних фреймов. Если же MDI-приложение поддерживает различные типы документов, каждый тип документа, становясь активным, выводит свое меню и подменяет заголовок главного окна. В случае, если одному документу сопоставлено несколько дочерних фреймов, они все имеют общее меню.

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 53; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.110 (0.008 с.)