![]() |
|
|
![]()
|
|
| zabludshiy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.11.2012 Репутация: нет Всего: нет |
Здравствуйте уважаемые форумчане
Мне необходимо реализовать алгоритм плавающего горизонта. Для этого создаю класс с помощью insert->new class... Class type = Generic class. Получаю шаблон класса, где создаю несколько методов, в один из которых будут передаваться координаты 2 точек, которые соединяются линией между собой. В итоге получилось следующее:
При компиляции следующая ошибка (среда visual c++ 6.0): :\Program Files\Microsoft Visual Studio\MyProjects\kr\shapes.cpp(54) : error C2664: 'CClientDC::CClientDC' : cannot convert parameter 1 from 'class shapes *const ' to 'class CWnd *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. Может кто-нибудь укажет направление "куда копать". В стандартных файлах, н-р CKлассView::OnDraw(CDC *pDC), в параметрах идет объявление контекста устройства CDC* pDC, но откуда берется и где инициализируется этот контекст не пойму. В литературе нашел объявление CClientDC* pDC=new CClientDC(this), которое можно использовать внутри событий и методов, но применить не получилось. Насколько я разобрался, чтобы соединить 2 точки в Visual C++ нужно работать с контекстом устройства, но как его получить, чтобы он корректно работал в методе не пойму. Если нужно его передавать как параметр, то где его объявление и инициализация делается в создаваемом классе? Не могу найти ответ. При создании класса с помощью мастера, я указывал его как стандартный , может нужно создавать класс, как MFC и указать его base class , например, View или какой нибудь другой? С Visual C++ 6.0 разбираюсь около месяца, поэтому если напечатал что-то не корректно, прошу строго не судить. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 6 Всего: 146 |
В "new CClientDC" нужно передавать указатель на окно, где будет производиться рисование.
Добавлено @ 23:43 Да и нежелательно для рисования каждой линии каждый раз создавать CClientDC. Лучше создать его перед рисованием. Это сообщение отредактировал(а) 586 - 28.11.2012, 00:44 |
|||
|
||||
| zabludshiy |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.11.2012 Репутация: нет Всего: нет |
Спасибо за направление, ситуация начала проясняться
Я класс создал в отдельном файле (вернее 2 файлов shapes.h b shapes.cpp) и подключаю файл shapes.h в СКлассView (krView.cpp). Создаваемое приложение однодокументное. Если я объявляю переменную CWnd *W и передаю ее в контекст устройства pDC=new CClientDC(W), то компилятор ошибки не выдает, но будет ли это корректно работать. Правильно ли я получаю указатель на окно, где будет проводиться рисование или все сложнее и нужно вызывать какие-нибудь методы для получения указателя на окно. Я так понимаю нужен указатель на активное окно, тогда метод будет применяться к нужному окну. Если так, то еще нужно переменной W присвоить указатель на активное окно или что-то в этом роде, но как это сделать что-то не могу найти.
и
|
||||
|
|||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 6 Всего: 146 |
Окно передавай в конструктор:
В конструктор передавай указатель на класс, который объявлен в "krView.h". В результате, должно быть примерно так:
Если у тебя так, то и создавать объект CClientDC не нужно вообще, используй объект, который пришёл в OnDraw. Это сообщение отредактировал(а) 586 - 29.11.2012, 07:03 |
||||
|
|||||
| zabludshiy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.11.2012 Репутация: нет Всего: нет |
Спасибо, получилось
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |