m_wndStatusBar.SetPaneText(1,""); 


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



ЗНАЕТЕ ЛИ ВЫ?

m_wndStatusBar.SetPaneText(1,"");

Поиск

m_wndStatusBar.SetPaneText(1,"");

 

По идее разработчиков MFC переключение индикаторов строки состояния должно осуществляться при помощи специального механизма обработки команд ON_UPDATE_COMMAND_UI. Однако, так как мы не знакомы с этим механизмом, то будем пользоваться для обновления нашего поля упомянутой выше функцией SetPaneText (доступ к объекту класса CStatusBar нашего главного фрейма получим через GetMDIFrame). Перед запуском AfxBeginThread в OnSolveThis вставляем:

((CMainFrame*) GetMDIFrame())->

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

 

Но эта команда не будет работать по двум формальным причинам: класс CMainFrame еще не откомпилирован в момент компиляции CChildFrame, и, кроме того, поле m_wndStatusBar недоступно из класса CChildFrame. Ликвидируем эти недоразумения:

 

1. В файле “ChildFrm.h” перед описанием класса CChildFrame вставим

#include "MainFrm.h"

2. В файле “MainFrm.h” объявим наш класс дочерних фреймов дружественным классу CMainFrame:

class CMainFrame : public CMDIFrameWnd

{

friend class CChildFrame;

. . .

Теперь в строку состояния будет внесена нужная информация при запуске решателя.

Аналогичную команду добавляем перед выходом из обработчиков OnThreadFinished и OnThreadError для очистки нашего поля:

((CMainFrame*) GetMDIFrame())->

Осталось позаботиться об обновлении содержимого нашего поля всякий раз, когда дочерний фрейм получает фокус ввода. Об этом событии каждый объект класса CWnd и его потомков получает сообщеиие WM_SETFOCUS. Нам нужно создать свой обработчик для него: View->ClassWizard. Открываем вкладку Message Maps, выбираем Class name->”CCildFrame" и его же в качестве объекта: Object IDs:->"CChildFrame".  Messages:->” WM_SETFOCUS ”->Add Function и соглашаемся с предложенным именем функции “OnSetFocus”. После



Поделиться:


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

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