![]() |
|
|
![]()
|
|
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
пытаюсь использовать функцию
GetClientRect в одном месте она используется нормально и определена в afxwin.h
в другом месте она не хочет использоваться т.к. определена в WinUser.h
и соответственно пишет error C2660: 'GetClientRect' : function does not take 1 arguments. как можно указать в одном .cpp файле использовать функции с одним и тем же именем,но определенные в разных .h файлах? зачем явно указывать #pragma once? почему это не стоит по дефолту? когда может потребоваться включение хедера несколько раз? |
||||
|
|||||
| bsa |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
В первом случае, если у тебя компилируется, то GetClientRect это метод класса. Во втором случае, скорее всего внешняя функция.
см. boost::preprocessor |
||||||||||||
|
|||||||||||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
CWnd::GetClientRect(&clientRect);
попробовал так не получается пишет (в первом случае работает, а в другом нет) : error C2352: 'CWnd::GetClientRect' : illegal call of non-static member function 1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2270) : see declaration of 'CWnd::GetClientRect' опять же this->GetClientRect(&clientRect); в первом случае работает, а во втором пишет : error C2039: 'GetClientRect' : is not a member of 'CMyClass' наверно потому что в 1 случае я вызывал class CtestView : public CView void CtestView::OnDraw(CDC* /*pDC*/) { //GetClientRect } а во втором случае bool CMyClass::Draw( CDC& dc) { //GetClientRect } т.е. CMyClass не унаследован от CView и поэтому наверно ошибка, но как вызывать нужные мне функции прямо из CMyClass::Draw( CDC& dc)? не пашут GetDC,ReleaseDC,GetClientRect. вообщем там такая иерархия class СViewClass: public CScrollView void СViewClass::OnUpdate() { //вызов функции Draw , которая bool CMyClass::Draw( CDC& dc) } Это сообщение отредактировал(а) mrgloom - 16.6.2011, 11:37 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Если бы ты знал английский, то бы понял: "неверный вызов нестатического метода". Только статические методы можно вызывать так, как ты сделал. А обычные нужно вызывать с указанием объекта. Тебе нужно сделать класс наследником CWnd. И вообще, завязывай с MFC. Оно уже мертво если не совсем, то практически. Обрати внимание на Qt (C++) или .Net (C#). |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
да вообще то у меня нету такой функции в классе и класс не унаследован от CWnd. как я написал выше иерархия как там все вызывается class СViewClass: public CScrollView void СViewClass::OnUpdate() { //вызов функции Draw , которая bool CMyClass::Draw( CDC& dc) } с mfc не могу завязать, проект на нем уже большой и старый. Это сообщение отредактировал(а) mrgloom - 16.6.2011, 11:44 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |