Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для LamerOnLine
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 37

Сохранение контекста в другом классе (MFC)

03.11.2020, 10:13. Показов 652. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас делаю примерно так:
в классе окна
C++
1
2
3
4
5
void MyClass1::OnPaint()
{
   CPaintDC dc(this);
   Draw(dc);
}
В отдельном классе (таково требование) принимаю этот контекст и использую. Но делаю это каждый вызов функции:
C++
1
2
3
4
void Draw(CPaintDC & const dc)
{
   //Отрисовка
}
Можно ли передать контекст в другой класс только один раз и сохранить его в переменной, а дальше просто использовать? Или это принципиально невозможно? Если это возможно, то каков синтаксис? Просто объявление
C++
1
CPaintDC Dc=dc
выдает ошибку:
function "CPaintDC::operator=(const CPaintDC &)" (declared implicitly) cannot be referenced -- it is a deleted function
Которую я не очень понимаю. Да и в принципе с MFC и контекстами работал мало. Кто может подсказать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2020, 10:13
Ответы с готовыми решениями:

Как использовать объект класса, созданого в определеном классе, в другом классе
У меня такой вопрос,как использовать объект класса,созданого в определеном классе,в другом классе.У меня есть объект pl класса Player,это...

Как использовать информацию парсированую в 1 классе в другом классе
имеются 2 класса , объясните плз в чём ошибка using System; using System.Collections.Generic; using System.Linq; using System.Text;...

Переменная изменилась в одном классе, куда "воткнуть" код в другом классе
Привет всем, Достало это событийное программирование. :wall: Я не делаю событийные "калькуляторы" и "конвертеры",...

3
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,120
03.11.2020, 11:13
Мне думается, что так не правильно делать. CPaintDC - это специфичная обёртка для рисования, навроде автолоков в STL. В конструкторе вызывается функция BeginPaint, в деструкторе EndPaint. Связка этих двух функций обеспечивает нормальную работу системы рисования и валидации перерисовываемых областей. Длительное хранение объекта CPaintDC не очень хорошее решение, так как логика использования заточена именно на вызовы конструктора и деструктора.
0
фрилансер
 Аватар для Алексей1153
6468 / 5683 / 1131
Регистрация: 11.10.2019
Сообщений: 15,149
03.11.2020, 13:56
LamerOnLine, теоретически можно (и даже вполне безопасно) хранить HDC . Его можно отстегнуть от объекта CDC методом Detach, а на время использования пристегнуть Attach (но не забывать потом отстёгивать, иначе деструктор CDC его релизнет)

безопасно - так как ничего нигде не упадёт, если хендл протухший, только перестанет работать вывод графики, и будет возвращаться GetLastError
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.11.2020, 19:30
Цитата Сообщение от LamerOnLine Посмотреть сообщение
Можно ли передать контекст в другой класс только один раз и сохранить его в переменной, а дальше просто использовать? Или это принципиально невозможно? Если это возможно, то каков синтаксис? Просто объявление
Это принципиально не нужно. Не выдумывай.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2020, 19:30
Помогаю со студенческими работами здесь

Нужно вызвать через сторонний метод(в другом классе,который в другом файле) метод в форме
public void Print_Inform(int numb1,int znak,int numb2) { switch(znak) { case 1: label2.Text = "+"; break; case...

MFC и static указатель в классе
Под него надо динамически выделить память но компилятор ругается class Kniga { private: CString *text; int *size_max; int...

Подключиться к службе WCF на другом компьютере. Ошибка "Отсутствует согласование контекста безопасности"
В общем только начал знакомиться с WCF, т.к. надо по работе. И сразу столкнулся с тем, что очень мало внятно написанной инфы на эту тему...

TextBox в другом классе
Допустим есть такой класс: public class Class1 { public System.Windows.Forms.TextBox textbox; public...

Переменная в другом классе
У меня есть два класса: AuthorizationForm и SendMailForm. как мне сделать, чтобы textBox.Text из первого класса вытащить во второй?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru