|
|
|
новичок
      
участник
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 - не нулл. Но ПОЧЕМУ при дальнейшем вызове ЛЮБОГО метода - КОСЯК ??? (Программа выполнила недопустимую операцию).
|
|
|
|
|
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);
|
|
|
|
|
новичок
      
участник
Last Login: 29.03.2007 20:51
Сообщ.: 9,
Visits: 23
|
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| На будущее имей в виду что функции WinAPI ничего не знают об MFC или любой другой библиотеке. Они работают сами по себе. Раз ты пишешь на MFC то и пользуйся функциями из ее классов и подобных проблем у тебя не будет.
|
|
|
|