Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
POSITION CWinApp::GetFirstDocTemplatePosition()
Содержание книги
- LPARAM lParam; // конкретный смысл которой зависит от
- Регистрация класса окна и Создание окна
- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow,
- Оконная процедура регистрируется в системе и вызывается всякий раз, когда Windows выполняет какую-либо операцию над окном приложения.
- GetClientRect(hWnd, &rt);. DrawText(hdc,lpszHello,strlen(lpszHello),&rt,DT_LEFT);. EndPaint(hWnd, &ps);. case WM_DESTROY: PostQuitMessage(0); break;. return DefWindowProc(hWnd,wMessage,wParam,lParam);. return 0;
- Общие сведения о сообщениях Win32
- Аппаратные (входные данные от мыши, клавиатуры и таймера);
- Список (list Box) –элемент отображения списка элементов, позволяющий пользователю выбрать один или несколько из них.
- пиктограммы (icons) – битовые массивы, использующиеся для визуального представления различных объектов в системе.
- CCmdTarget - базовый класс для всех объектов, которые могут получать и отправлять сообщения.
- Шаг2. Выбираем «An empty project»
- Макросы-компоненты карты сообщений
- 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)
POSITION CWinApp::GetFirstDocTemplatePosition()
CDocTemplate* CWinApp::GetNextDocTemplate(POSITION &pos)
Функция
virtual CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
открывет файл документа, заданный именем lpszFileName и возвращает указатель на соответствующий объект-документ. Если приложение поддерживает несколько шаблонов документов, то для выбора нужного шаблона MFC использует расширение файла.
Функции
afx_msg CWinApp::OnFileNew()
и
afx_msg CWinApp::OnFileOpen()
обрабатывают команды ID_FILE_NEW и ID_FILE_OPEN. В случае переопределения этих функций в пользовательских классах, в карту сообщений класса приложения необходимо добавить соответствующие макросы ON_COMMAND.
В заключение перечислим шаги, которые необходимо проделать программисту для организации работы в рамках архитектуры “документ/представление”:
1. Создать объект-приложение.
2. Создать объекты-документы.
3. Создать необходимое число представлений каждого документа.
4. В функции InitInstance объекта-приложения создать объекты-шаблоны документов и добавить их.
5. Создать необходимые ресурсы для каждого из них.
6. Создать и вывести на экран главный фрейм приложения (возможно, с присоединенными дочерними фреймами).
К счастью, все эти шаги уже выполнил за нас мастер AppWizard при создании каркаса приложения.
Маршруты команд в архитектуре Документ/представление
Обычные сообщения Windows, не являющиеся командами, не требуют какого-либо маршрута для поиска обработчика. Когда приложение получает обычное сообщение, оно направляется в указанное в сообщении окно-получатель и там обрабатывается. Каждый оконный класс, образованный непосредственно или косвенно от класса CWnd, имеет собственную карту сообщений, которая устанавливает связи между сообщениями и обработчиками. Если соответствующий обработчик не найден в карте данного класса, то он ищется в карте базового для него класса, и т.д.
Поскольку команды формируются в результате взаимодействия пользователя с приложением, то, обычно, команда генерируется в главном окне приложения. Именно здесь, не будь каркаса приложения, Вам пришлось бы размещать обработчики команд. Благодаря же системе распределения команд библиотеки MFC, командные сообщения можно обрабатывать практически где угодно.
Возникает вопрос: что если данный объект не найдет в своей карте сообщений поступившую команду?В этом случаепоиск переносится в карту сообщений базовых классов, а если и там нет ассоциированного обработчика, то главное окно передает эту команду следующему кандидату на обработку. Для этого в библиотеке MFC определен стандартный маршрут, по которому передается команда.
Обнаружив команду от окна-рамки, каркас MDI-приложений начинает поиск соответствующих обработчиков в следующей последовательности:
|