Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 94
1

EnumChildWindows: "недопустимая операция с выражением привязанной функции-члена"

11.09.2011, 10:53. Просмотров 1955. Ответов 4
Метки нет (Все метки)


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
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
            HWND Window_Samp = FindWindow(L"TfmMain",NULL);
            if(!Window_Samp){
                WinExec("D:\\GTA San Andreas\\samp.exe", SW_NORMAL);
                Window_Samp = FindWindow(L"TfmMain",NULL);
                if(!Window_Samp){// даже после попытки запуска не было обнаружено окно :(
                    
                }
            }
            if(Window_Samp){
                SetWindowText(Window_Samp, L"SA Multiplayer 0.3c - Modifier");
                HWND Window_Properties = FindWindow(L"TfmServerProperties",NULL);
                                
                if(Window_Properties){
                    SetWindowText(Window_Properties, L"Информация о сервере (Modifier)");
                    HWND Window_Ip = FindWindowEx(Window_Properties,NULL,L"TEdit",L"");
                    char buffer[25];GetWindowTextA(Window_Ip, buffer, GetWindowTextLength(Window_Ip)+1);
                    std::string text( buffer, sizeof(buffer) );
                    this->Text = gcnew System::String(text.c_str());
                    EnumChildWindows(Window_Properties, &EnumChildWindowsProc, NULL);
                    //EnumChildWindows(Window_Properties, (WNDENUMPROC) GetElements, NULL);
                }
            }
        }
        
         BOOL __clrcall EnumChildWindowsProc(HWND hwnd,LPARAM lParam)
         {
             int N = 0;
             switch(++N)
             {
             case 3: // Ип адрес сервера
                 username = hwnd;
                 SetWindowText(username, L"test1");
                 break;
 
             case 4: // input Сервер пароль
                 hackreg = hwnd;
                 SetWindowText(hackreg, L"test2");
                 break;
 
             case 5: // input ркон пароль
                 regnum = hwnd;
                 SetWindowText(regnum, L"test3");
                 break;
 
             case 6: // кнопка Подключения
                 input_but = hwnd;
                 SetWindowText(input_but, L"test4");
                 break;
 
             case 7: // кнопка Сохранения
                 input_but2 = hwnd;
                 SetWindowText(input_but2, L"test5");
                 break;
 
             case 8: // кнопка Отмена
                 input_but3 = hwnd;
                 SetWindowText(input_but3, L"test6");
                 return 0;
             }
             return 1;
         }
При компиляции выдает ошибку
1>c:\users\developed\documents\visual studio 2010\projects\modifier\modifier\Loader.h(214): error C2276: &: недопустимая операция с выражением привязанной функции-члена
подскажите как решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2011, 10:53
Ответы с готовыми решениями:

Ошибка: недопустимая операция с выражением привязанной функции-члена
Здравствуйте, программирую в visual studios и вот в одной из функция возникла такая проблема:...

Error C2276: недопустимая операция с выражением привязанной функции-члена
Всем привет, первый раз работаю с потоками и пока хочу чтобы поток мне вывел значение x*x в окошке...

Ошибка "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "richTextBox1" не из того потока, в котором он был создан."
Код клиента: public partial class Form1 : Form { string IP; string Port;...

Исправить ошибку: "Недопустимая операция в нескольких потоках"
Всем привет. Помогите исправить ошибку в коде: System.InvalidOperationException: "Недопустимая...

4
1078 / 1004 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
11.09.2011, 11:17 2
EnumChildWindowsProc должен быть статическим методом.

Добавлено через 5 минут
Полезно почитать: Передача указателя на метод в функцию
0
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 94
11.09.2011, 16:42  [ТС] 3
C++
1
В среде выполнения обнаружена критическая ошибка. Ошибка произошла по адресу 0x68aad9e9 в потоке 0xc4c. Код ошибки 0xc0000005. Она может быть вызвана ошибкой в CLR или в небезопасных либо не поддающихся проверке фрагментах пользовательского кода. Обычно источниками таких ошибок бывают ошибки упаковки, допускаемые пользователями при COM-взаимодействии, либо PInvoke, повредивший стек.
выдает на строку
EnumChildWindows(Window_Properties, (WNDENUMPROC) EnumChildWindowsProc, NULL);
0
591 / 529 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
11.09.2011, 16:51 4
объяви функцию EnumChildWindowsProc как CALLBACK
C++
1
2
int N = 0;
switch(++N)
мож все таки static int ?
0
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 94
11.09.2011, 16:53  [ТС] 5
C++
1
2
3
4
1>c:\users\developed\documents\visual studio 2010\projects\modifier\modifier\Loader.h(221): warning C4441: соглашение вызова "__stdcall " игнорируется; вместо него используется "__clrcall "
1>  Создание кода...
1>  .NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>Modifier.obj : warning LNK4248: неразрешенная лексема TypeRef (0100003D) для "Gdiplus.GpCachedBitmap"; образ нельзя запустить
А терь сразу после запуска приложения выдает ошибку см.предыдущий пост.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2011, 16:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ошибка при рекурсивном вычислении: "недопустимая операция с плавающей точкой"
double kor(double a) { double x=0.5*(1+a); if (fabs(x-a)>0.0001) return...

"Недопустимая операция в нескольких потоках" как исправить данный недуг?
Здравствуйте, помогите пожалуйста исправить ошибку, вроде сделал с горем пополам вывод времени до...

Нажатие на кнопку посредством PerformClick вызывает ошибку "Недопустимая операция в нескольких потоках"
Порылся в интернете, нашел разные коды нажатий на button btn.PerformClick(); butLoad_Click(null,...

Почему первый вариант дает исключение "Недопустимая операция в нескольких потоках", а второй нет?
есть два варианта кода: Task.Run(() => { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.