Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
TODO: Add your message handler code here
Содержание книги
- afx_msg void OnLButtonUP(UINT nFlags, CPoint point);
- Nmhdr *pnotifystruct, //указатель на структуру с данными
- Посылает сообщение в объект класса cwnd или его потомка, непосредственно вызывая оконную процедуру, и не выходит из нее, пока та не обработает сообщение;
- strMessageText.Format("Error number %d", nError);
- Архитектура «Документ-представление» и MDI-приложения
- HMENU CMDIChildWnd::m_hMenuShared
- дескриптор меню, ассоциированного с окном “MDI child”.
- CDocument* CView:: GetDocument()
- Динамическое создание с помощью конструктора
- virtual POSITION CDocument::GetFirstViewPosition()
- Класс шаблона cdoctemplate в приложении отвечает за взаимодействие документов, их представлений и фреймов. В MDI приложении используется его потомок cmultidoctemplate.
- CMultiDocTemplate* pDocTemplate;
- CFrameWnd* pFrame,CDocument* pDoc, BOOL bMakeVisible=TRUE);
- POSITION CWinApp::GetFirstDocTemplatePosition()
- Документ, связанный с активным представлением
- AFX_THREADPROC pfnThreadProc, // Глобальная функция потока
- UINT Msg, // идентификатор сообщения
- Solver* pSolver; //Solver to use
- virtual CDocument* CFrameWnd::GetActiveDocument()
- SendMessage(WM_COMMAND,ID_FILE_SAVE,0);
- while (::GetMessage(&msg, NULL,0,0))
- Объекты, объявленные как volatile, не подвержены оптимизации и временному хранению в регистрах, но читаются и записываются каждый раз напрямую в память.
- if (!m_thisThreadParams.pResults) return 1;
- if (m_thisThreadParams.pResults)
- ID_SEPARATOR, // status line indicator
- m_wndStatusBar.SetPaneText(1,"");
- TODO: Add your message handler code here
- Нажимаем на элементе “решить” мышку и переносим его на место между пунктами ”window” и ”help” (для порядка).
- Separator – элемент представляет собой горизонтальную разделительную линию
- Object IDs:-> IDM_SOLVE_CONV.
- Шаблон диалога, хранящийся в файле ресурсов, описывает форму, размер и расположение на экране блока диалога и каждого из его внутренних элементов управления.
- CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
- правой кнопкой)->Ok->Properties->ID:"IDC_START"
- В правом верхнем углу ставим Static Text "&Начальная точка:".
- Имя этого класса должно обязательно (. ) соответствовать вашему методу решения задачи выпуклой оптимизации. Иначе задача на практике приниматься не будет.
- class CMyDialog : public CDialog
- BOOL cwnd::updatedata( BOOL bsaveandvalidate = TRUE )
- void CMyDialog::DoDataExchange(CDataExchange* pDX)
- Vs2005: правой кнопкой на элементе -> Add variable)
- View->ClassWizard->Message Maps->ClassName:"CDFPDialog"->
- int CListBox::AddString( LPCTSTR lpszItem )
- int CListBox::DeleteString( UINT nIndex )
- обновляет содержимое элементов управления на экране
- void CDFPDialog::OnSelchangeCoordList()
- BOOL cwnd::enablewindow(bool benable = TRUE)
- int FuncNum; //Номер целевой функции
- Критическая секция, ее применение в нашем проекте
- И на каждой итерации перед обновлением поля goalvalue вставим
- ResourceView->Optimizer resources –R->
- void CDFPDialog::OnTimer(UINT nIDEvent)
// 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-приложение поддерживает различные типы документов, каждый тип документа, становясь активным, выводит свое меню и подменяет заголовок главного окна. В случае, если одному документу сопоставлено несколько дочерних фреймов, они все имеют общее меню.
|