Доступ к элементам через WINAPI.
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Доступ к элементам через WINAPI. Expand / Collapse
Автор
Сообщение
11.03.2007 15:58
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 29.03.2007 20:51
Сообщ.: 9, Visits: 23
Если внутри функции я пишу так:

 CEdit* pEdit;
 pEdit = (CEdit*) GetDlgItem(FindWindow(NULL, "Thr_2"),ID_EDIT1);
 if(!pEdit)AfxMessageBox("fff");
 pEdit->SetWindowText("1234");//!! КОСЯК !!!

И вроде - да, pEdit - не нулл. Но ПОЧЕМУ при дальнейшем вызове ЛЮБОГО метода - КОСЯК ??? (Программа выполнила недопустимую операцию).

Сообщ. #911425
11.03.2007 16:40
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Результатом вызова GetDlgItem(FindWindow(...)...) будет дескриптор окна (значение типа HWND), а не переменная типа CWnd. Тебе надо или использовать соответсвующие функции MFC или обернуть HWND в переменную CWnd.

Вариант 1.

CEdit* pEdit = (CEdit*)CWnd::FindWindow(NULL, "Thr_2")->GetDlgItem(ID_EDIT1);

Вариант 2.

HWND hwndEdit = GetDlgItem(FindWindow(NULL, "Thr_2"), ID_EDIT1);
CEdit* pEdit = (CEdit*)CWnd::FromHandle(hwndEdit);

Сообщ. #911426
11.03.2007 20:27
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 29.03.2007 20:51
Сообщ.: 9, Visits: 23
Спасибо, работает !!!
Сообщ. #911434
12.03.2007 9:46
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
На будущее имей в виду что функции WinAPI ничего не знают об MFC или любой другой библиотеке. Они работают сами по себе. Раз ты пишешь на MFC то и пользуйся функциями из ее классов и подобных проблем у тебя не будет.
Сообщ. #911438
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 5:16