Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
View->ClassWizard->Message Maps->ClassName:"CDFPDialog"->
Содержание книги
- 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)
View->ClassWizard->Message Maps->ClassName:"CDFPDialog"->
Object IDs:"IDC_START"->Messages:"BN_CLICKED"->
Add Function->Ok->Edit Code
и вызвать там механизм обмена данными с элементами управления и их проверки:
if (UpdateData(TRUE))
{
::AfxMessageBox("Решаю"); //Для отладки
//Здесь вы разместите запуск рабочего потока решателя
}
Вы можете теперь убедиться, что при нажатии кнопки Пуск окошко с сообщением "Решаю" выскакивает только при условии, что все данные введены корректно. Иначе выдается сообщение об ошибке ввода и фокус возвращается в элемент управления, требующий корректировки.
Аналогичный обработчик создаем для кнопки Stop – он предназначен для остановки решателя, как это делалось клавишей <ESC> в решателе задачи из файла.
MFC обеспечивает набор классов, которые могут использоваться для взаимодействия со стандартными элементами управления Windows. Сюда относятся кнопки различных видов (CButton), статический текст (CStatic), поле редактирования текста (CEdit), полосы прокрутки (CScrollBar), список (CListBox), комбинированный блок, состоящий из списка и поля редактироваия (CComboBox) и др.
В последней таблице большинству элементов управления были назначены переменные со свойством "Value", однако, для некоторых использовалось "Control". Назначение "Control" дает прямой доступ к элементу управления, вводя в класс переменную-объект одного из стандартных классов MFC, предназначенных для элементов управления, таких как CButton или CListBox. В этом случае вы получаете доступ к элементу управления через интерфейс соответствующего класса.
Заметим, что доступ к объекту MFC, отвечающему нужному элементу управления в принципе можно получить и с помощью функции
CWnd* GetDlgItem ( int nID ) const
которая возвращает указатель на объект элемента управления (или дочернего окна), имеющего указанный ID. Однако пользоваться данной функцией следует осторожно, т.к. в случае отсутствия у данного элемента управления (как объекта Win32) ассоциированного объекта MFC, ему сопоставляется временный объект MFC, которыйможет перестать существовать через некоторое время.
|