VS 2008 MFC Feature Pack - Как мне

У меня есть приложение, которое я пишу, используя пакет функций MFC. Он использует Document/View. Поскольку эти классы являются производными от "обычных" классов MFC, эти вопросы могут не зависеть от Feature Pack.

Когда изменение сделано, я добавляю звездочку * на имя на вкладке, и слово (modified) в заголовок главного окна, используя следующий код:

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
frame->SetTitle(tabval);
frame->SetWindowText(tabval);
name = mainFrame->GetTitle();
mainFrame->SetWindowText(name + " - " + winval);

Но при переключении между вкладками исходный текст возвращается. Первый вопрос: как я могу сделать изменение липким?

Второй вопрос: слева вид дерева и справа окно свойств. Переключение между ними (не) выделяет заголовки, чтобы показать, какой из них активен. Пользователь также может активировать и взаимодействовать с окном документа, но, похоже, нет никакого способа дать визуальную обратную связь о том, что окно документа, по сути, активно. Как я могу это сделать?

2 ответа

Решение

Непонятно, какие у тебя типы переменных, но как у тебя pDoc а также frameЯ полагаю, что бывший ваш CDocument производный класс, и последний, возможно, является CFrameWnd или же CMDIFrameWnd производный класс.

Если я не ошибаюсь, то причина, по которой заголовки вкладок не прилипают, заключается в том, что вы должны звонить SetTitle на CDocument это позади каждого представления с вкладками, так что-то вроде

tabval = "Report_" + pDoc->rptData.reportId.Strip();
winval = tabval;
if (changed) {
    tabval += " *";
    winval += " (modified)";
}
pDoc->SetTitle(tabval);    // set tab title on CDocument

У меня была похожая проблема в прошлом. Причиной возврата текста заголовка главного окна является функция CFrameWndEx:: OnUpdateFrameTitle. Поскольку он является виртуальным, вы можете переопределить его в своем производном классе, чтобы получить желаемое поведение. Это решение, которое сработало для меня.

Другие вопросы по тегам