Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12

ошибка [BCC32 Error] windowp.cpp(201): E2235 Member function must be called or its address taken

11.07.2013, 14:22. Показов 2005. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
    wc.lpfnWndProc      = WndProc;
[BCC32 Error] windowp.cpp(201): E2235 Member function must be called or its address taken
Full parser context
windowp.cpp(191): parsing: unsigned long (__stdcall *)(void *) CwindowP::WINDOWP(void *)


переменная указывает на функцию класса, так делать нельзя?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2013, 14:22
Ответы с готовыми решениями:

[C++ Error] Unit1.cpp(23): E2235 Member function must be called or its address taken
Хочу открыть файл из компонента sShelllistView1 в компонент WebBrowser. пишу следующее: String FileName; FileName =AnsiString(...

Си++.Выходит ошибка E2235 Member function must be called or its address taken
Не получается убрать ошибку. void __fastcall TForm1::Button1Click(TObject *Sender) { int n1; n1 = StrToInt( Edit1 -> Text...

SetTimer и E2235 Member function must be called or its address taken
Всем Привет! Прошу помочь разобраться в чём ошибка, собственно текст программы из Архангельского "механизмы windows, сети". ...

3
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
11.07.2013, 14:30
Цитата Сообщение от Van111 Посмотреть сообщение
так делать нельзя?
Функции-члены класса имеют неявный параметр (this)

WinApi: CALLBACK WndProc
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
11.07.2013, 18:40  [ТС]
у меня при вервом обращение к компоненту класа вылетает ошибка
Кликните здесь для просмотра всего текста
C++
1
2
3
4
CwindowP::CwindowP(HINSTANCE hInstance)
{
    WINDOWP( hInstance);
}

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
LRESULT CALLBACK CwindowP::WndProc(
                HWND    hWnd,
                UINT    message,
                WPARAM  wParam,
                LPARAM  lParam)
{
    RECT    Screen;     // используется позднее для размеров окна
    GLuint  PixelFormat;
    static  PIXELFORMATDESCRIPTOR pfd=
    {
        sizeof(PIXELFORMATDESCRIPTOR)// Размер этой структуры
        1,              // Номер версии (?)
        PFD_DRAW_TO_WINDOW |// Формат для Окна
        PFD_SUPPORT_OPENGL |// Формат для OpenGL
        PFD_DOUBLEBUFFER,// Формат для двойного буфера
        PFD_TYPE_RGBA,  // Требуется RGBA формат
        16,             // Выбор 16 бит глубины цвета
        0, 0, 0, 0, 0, 0,// Игнорирование цветовых битов (?)
        0,              // нет буфера прозрачности
        0,              // Сдвиговый бит игнорируется (?)
        0,              // Нет буфера аккумуляции
        0, 0, 0, 0,     // Биты аккумуляции игнорируются (?)
        16,             // 16 битный Z-буфер (буфер глубины)
        0,              // Нет буфера траффарета
        0,              // Нет вспомогательных буферов (?)
        PFD_MAIN_PLANE, // Главный слой рисования
        0,              // Резерв (?)
        0, 0, 0         // Маски слоя игнорируются (?)
    };
    switch (message)    // Тип сообщения
    {
        case WM_CREATE:
        this->hDC = GetDC(hWnd);    // Получить контекст устройства для окна
        PixelFormat = ChoosePixelFormat(hDC, &pfd);
            // Найти ближайшее совпадение для нашего формата пикселов
        if (!PixelFormat)
        {
            MessageBoxA(0,"Can't Find A Suitable PixelFormat.","Error",MB_OK|MB_ICONERROR);
            PostQuitMessage(0);
            // Это сообщение говорит, что программа должна завершится
            break;  // Предтовращение повтора кода
        }
        if(!SetPixelFormat(hDC,PixelFormat,&pfd))
        {
            MessageBoxA(0,"Can't Set The PixelFormat.","Error",MB_OK|MB_ICONERROR);
            PostQuitMessage(0);
            break;
        }
        hRC = wglCreateContext(hDC);
        if(!hRC)
        {
            MessageBoxA(0,"Can't Create A GL Rendering Context.","Error",MB_OK|MB_ICONERROR);
            PostQuitMessage(0);
            break;
        }
        if(!wglMakeCurrent(hDC, hRC))
        {
            MessageBoxA(0,"Can't activate GLRC.","Error",MB_OK|MB_ICONERROR);
            PostQuitMessage(0);
            break;
        }
        GetClientRect(hWnd, &Screen);
        InitGL(Screen.right, Screen.bottom);
        BuildFont();
        break;
 
        case WM_DESTROY:
        case WM_CLOSE:
        ChangeDisplaySettings(NULL, 0);
 
        wglMakeCurrent(hDC,NULL);
        wglDeleteContext(hRC);
        ReleaseDC(hWnd,hDC);
        KillFont();
        PostQuitMessage(0);
        break;
 
        case WM_KEYDOWN:
        keys[wParam] = TRUE;
        break;
 
        case WM_KEYUP:
        keys[wParam] = FALSE;
        break;
 
        case WM_SIZE:
        ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
        break;
 
        case WM_MBUTTONDOWN:
        mouse_click_middle = true;
        GetCursorPos(&mouse_position_last);
        break;
 
        case WM_MBUTTONUP:
        mouse_click_middle = false;
        break;
 
        case WM_MOUSEMOVE:
        if (mouse_click_middle)
        {
            GetCursorPos(&mouse_position);
            CameraViev::y -=  (mouse_position.x - mouse_position_last.x) * CameraViev::speed_rotate_angle;
            CameraViev::x +=  (mouse_position.y - mouse_position_last.y) * CameraViev::speed_rotate_angle;
            memcpy(&mouse_position_last,&mouse_position,sizeof(POINT));
        }
        break;
 
        case WM_MOUSEWHEEL:
        float wheelDelta;
        wheelDelta= GET_WHEEL_DELTA_WPARAM(wParam);
        if (mouse_click_middle)
            CameraViev::z +=  wheelDelta * CameraViev::speed_rotate_angle;
        else
            CameraViev::zoom += wheelDelta * CameraViev::speed_zoom;
        break;
 
        default:
    return (DefWindowProc(hWnd, message, wParam, lParam));
    }
    return (0);
}

Кликните здесь для просмотра всего текста
C++
1
2
3
4
inline static LRESULT CALLBACK CwindowP::mainwindowproc_pseudo(HWND hWnd,UINT message,WPARAM wParam, LPARAM lParam)
{
    return wndlist.find(hWnd)->second->WndProc(hWnd, message, wParam, lParam);
}

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
LPTHREAD_START_ROUTINE CwindowP::WINDOWP (  LPVOID lpThreadParameter)
{
    InitGL();
 
    HINSTANCE hInstance = (HINSTANCE)lpThreadParameter;
    MSG     msg;    // Структура сообщения Windows
    WNDCLASS    wc; // Структура класса Windows для установки типа окна
    HWND        hWnd;// Сохранение дискриптора окна
    wndlist[hWnd] = this;
 
    wc.style            = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
    wc.lpfnWndProc      = mainwindowproc_pseudo;
    wc.cbClsExtra       = 0;
    wc.cbWndExtra       = 0;
    wc.hInstance        = hInstance;
    wc.hIcon            = NULL;
    wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground    = NULL;
    wc.lpszMenuName     = NULL;
    wc.lpszClassName    = "OpenGL WinClass";
 
    if(!RegisterClass(&wc))
    {
    MessageBoxA(0,"Failed To Register The Window Class.","Error",MB_OK|MB_ICONERROR);
    return FALSE;
    }
 
    hWnd = CreateWindowA(
    "OpenGL WinClass",
    "Jeff Molofee's GL Code Tutorial ... NeHe '99", // Заголовок вверху окна
 
    WS_POPUP |
    WS_CLIPCHILDREN |
    WS_CLIPSIBLINGS,
 
    0, 0,           // Позиция окна на экране
    1280, 1024,     // Ширина и высота окна
 
    NULL,
    NULL,
    hInstance,
    NULL);
 
    if(!hWnd)
    {
    MessageBoxA(0,"Window Creation Error.","Error",MB_OK|MB_ICONERROR);
        return FALSE;
    }
 
    DEVMODE dmScreenSettings;           // Режим работы
 
    memset(&dmScreenSettings, 0, sizeof(DEVMODE));  // Очистка для хранения установок
    dmScreenSettings.dmSize = sizeof(DEVMODE);      // Размер структуры Devmode
    dmScreenSettings.dmPelsWidth    = 1280;         // Ширина экрана
    dmScreenSettings.dmPelsHeight   = 1024;         // Высота экрана
    dmScreenSettings.dmFields   = DM_PELSWIDTH | DM_PELSHEIGHT; // Режим Пиксела
    ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
    // Переключение в полный экран
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
    SetFocus(hWnd);
    //SetTimer(hWnd,0, frame_rate,(TIMERPROC)&FDraw);
 
 
    while (1)
    {
        // Обработка всех сообщений
        while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
        {
            if (GetMessage(&msg, NULL, 0, 0))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            else
            {
                return (LPTHREAD_START_ROUTINE)TRUE;
            }
        }
 
        //DrawGLScene();                // Нарисовать сцену
        //SwapBuffers(hDC);         // Переключить буфер экрана
        if (keys[VK_ESCAPE]) SendMessage(hWnd,WM_CLOSE,0,0);    // Если ESC - выйти
    }
}
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
13.07.2013, 10:34  [ТС]
C++
1
2
3
4
5
    static std::map<HWND,CwindowP*> wndlist;
LRESULT CALLBACK mainwindowproc_pseudo(HWND hWnd,UINT message,WPARAM wParam, LPARAM lParam)
{
    return wndlist.find(hWnd)->second->WndProc(hWnd, message, wParam, lParam);
}
это в cpp файле. почему вылетает? при обращении к переменной класса программа вылетает
вот этот кусок
C++
1
2
3
4
    switch (message)    // Тип сообщения
    {
        case WM_CREATE:
        hDC = GetDC(hWnd);  // Получить контекст устройства для окна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.07.2013, 10:34
Помогаю со студенческими работами здесь

Ошибка: "[bcc32 Error] Unit1.cpp(30): E2316 'TForm1::manRefresh(int ( *)[10])' is not a member of 'TForm1'"
Здравствуйте, форумчане! Нуждаюсь в вашей помощи. На сколько я понимаю, есть уже &quot;готовый обработчик&quot; (двойной клик), типа...

[bcc32 Error] File1.cpp(19): E2316 'Stack<T>::Stack()' is not a member of 'Stack<T>'
Возникает ошибка File1.cpp(19): E2316 'Stack&lt;T&gt;::Stack()' is not a member of 'Stack&lt;T&gt;' #pragma hdrstop #pragma argsused ...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

[BCC32 Error] UnitMain.cpp(3183): E2228 Too many error or warning messages
Builder 2010 warning в основном такиеvoid __fastcall TFormMain::TBELearningMouseMove(TObject *Sender, TShiftState Shift, int X, int...

[BCC32 Error] Unit10.cpp(20): E2141 Declaration syntax error
void __fastcall TForm10::Button1Click(TObject *Sender) { double plosa(float r,int k,float h) { //здесь...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru