Метод, который можно использовать для динамического отображения информации о системе, очень полезно (^_^)
В информации файла справки по ключевым словам отображается имя оригинального автора Ци Гао и первоначальный источник статьи.
Введение: Большинство общих файлов справки системы используют статическую форму для отображения содержимого в интерфейсе при отображении справочной информации. Поскольку на этот раз я отвечаю за разработку проекта, мне всегда кажется, что это слишком однообразно, поэтому в каждом случае после поиска. на веб-сайте я нашел хороший класс управления (класс управления отображением шрифтов), поэтому я расширил его и выполнил некоторые функции динамического отображения. После завершения различная отображаемая справочная информация может отображаться динамически, как фильм. Эффект довольно хороший. Теперь я опишу процесс производства, код и демонстрационный эффект. Надеюсь, это будет полезно тем, кто исследовал эту область или ищет хороший метод.
В то же время вы можете при необходимости изменить текстовую информацию, отображаемую в коде этой статьи.
Когда в основном тексте отображается файл справки, я использую полноэкранный метод отображения, но если я использую полноэкранный метод VIEW, мне всегда кажется, что это слишком некрасиво, поэтому я сначала вставляю фоновое изображение на основе полного изображения. на экране, а затем загрузить его на фоновое изображение. Просто отобразите функцию. Фактически, простой метод заключается в динамическом создании элемента управления CSTATIC непосредственно на фоновом изображении. Однако, поскольку моя система требует обработки множества других функциональных интерфейсов, я использовал его. диалоговое окно, примите форму немодального диалогового окна, а затем переместите его в указанное место после его создания.
Этапы производства:
Запустите VC, создайте единую функцию документа на основе CVIEW, а остальные оставьте с настройками по умолчанию.
Я не использовал концепцию полноэкранного режима, как традиционным способом. Вместо этого я переместил основной кадр MoveWindow в соответствии с разрешением экрана, а затем удалил строку заголовка, строку меню, панель инструментов, строку состояния и т. д. для отображения. почти полноэкранный эффект, а затем просто вставьте в него фоновое изображение. Возможно, это вообще нельзя считать полноэкранной концепцией (^_^). Конкретные шаги реализации заключаются в следующем:
Измените функцию InitInstance() приложения следующим образом:
// Единственное окно инициализировано, поэтому покажите и обновите его.
m_pMainWnd->SetMenu(NULL);//Удалить меню
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//Изменить свойства формы
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//Переносим форму на разрешение экрана
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//Это объяснять не нужно
m_pMainWnd->UpdateWindow();
Затем измените функцию-член класса MainFrame, чтобы удалить панель инструментов и строку состояния. Измените функцию PreCreateWindow(CREATESTRUCT& cs) следующим образом:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
если (CFrameWnd::OnCreate(lpCreateStruct) == -1)
вернуть -1;
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);//Скрыть панель задач, если она не скрыта, эта штука всегда будет появляться в неподходящее время и влиять на общий эффект.
вернуть 0;
}
Вышеуказанные шаги скрывают панель задач WINDOWS, поэтому мы должны восстановить ее при выходе из программы. Мы не хотим видеть ее после завершения работы программы. Поскольку программе необходимо отправить сообщение WM_CLOSE при выходе, мы можем перехватить сообщение WM_CLOSE. из MainFrame, здесь. Чтобы восстановить строку состояния, код выглядит следующим образом:
void CMainFrame::OnClose()
{
// TODO: добавьте сюда код обработчика сообщений и/или вызовите default
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//Восстановить панель задач
CFrameWnd::OnClose();
}
На этом этапе мы завершили основную подготовительную работу. Следующая задача — вставить фоновое растровое изображение и создать отображаемое диалоговое окно.
Вставка фонового растрового изображения: загрузите фоновое растровое изображение, сопоставьте сообщение WM_PAITN VIEW, затем вставьте фоновое растровое изображение, одновременно сопоставьте сообщение WM_EARSEBKGND и удалите работу по стиранию экрана. Просто измените оператор return, чтобы он возвращал TRUE.
void CAboutDemoView::OnPaint()
{
// ЗАДАЧА: добавьте сюда код обработчика сообщений
CPaintDC dc(this); // контекст устройства для рисования
HBITMAP hbitmap;
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BACKBMP));
HDC hMenDC=::CreateCompatibleDC(NULL);
SelectObject(hMenDC,hbitmap);
::StretchBlt(dc.m_hDC,0,0,1024,768,hMenDC,0,0,1024,768,SRCCOPY);
::DeleteDC(hMenDC);
::DeleteObject(hbitmap);
// Не вызывайте CView::OnPaint() для рисования сообщений
}
Создайте ресурс диалогового окна для отображения соответствующей информации, измените свойства диалогового окна Style->Popup, Border->None и создайте класс диалогового окна CShowAboutDlg, затем поместите элемент управления CSTATIC в диалоговое окно и отрегулируйте его положение;
Создайте это немодальное диалоговое окно в VIEW и отобразите:
CShowAboutDlg *m_pAboutDlg;
CRectrect;
m_pAboutDlg = новый CShowAboutDlg ();
m_pAboutDlg-> Создать (IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE); //Поскольку фоновое изображение имеет границу, эту позицию следует зарезервировать здесь
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//Этот элемент управления PIC занимает клиентскую область диалогового окна
m_pAboutDlg->ShowWindow(SW_SHOW);
Ниже приведен файл для добавления класса управления отображением шрифта. Добавьте в проект ZgMemDC, ZgDraw.h, ZgDraw.cpp, TitleShow.h, TitleShow.cpp, PublicClass.cpp, PublicClass.h, а затем добавьте AutoFont.h и AutoFont.cpp. Излишне говорить, что функция этого класса была представлена в предыдущей статье на основе человека, предоставившего класс управления отображением шрифта, я изменил соответствующий объем кода и внес изменения в отображение текста, поскольку исходный класс. Шрифт не соответствует требованиям к отображению в нашей текущей системе (^_^).
Затем просто загрузите и отобразите сообщение в классе диалога.
Определите объект класса Display CSTATIC TitleShow, а затем добавьте содержимое отображения информации при инициализации:
****
Еще один шаг — перехватить клавишу возврата каретки и ESC, чтобы выйти из диалогового окна.
BOOL CShowAboutDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: добавьте сюда свой специализированный код и/или вызовите базовый класс
if(pMsg->message == WM_KEYDOWN)
{
переключатель (pMsg->wParam)
{
случай VK_RETURN:
вернуть ИСТИНА;
случай VK_ESCAPE:
вернуть ИСТИНА;
}
}
вернуть CDialog::PreTranslateMessage(pMsg);
}
На этом основная работа программы завершена. Скомпилируйте и запустите проект, чтобы увидеть эффект.
Расширять