Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > доступ к элементам диалогового окна


Автор: shuttle 7.9.2009, 06:45
диалоговое окно - на нем есть элементы edit, как считать и записать в них значение, и послать сообщение что бы нажалась опредленная кнопка.

GetClassName - этим получаю нужный элемент(edit, button)
GetWindowText - этой функцией не считыватеся значение из edit-а. 

Может нужна другая функция?

Автор: Andrey44 7.9.2009, 06:49
Цитата(shuttle @  7.9.2009,  06:45 Найти цитируемый пост)
GetClassName - этим получаю нужный элемент(edit, button)

А как ты их создаешь? Разве не CreateWindow ?

Добавлено через 2 минуты и 27 секунд
Цитата(shuttle @  7.9.2009,  06:45 Найти цитируемый пост)
GetWindowText - этой функцией не считыватеся значение из edit-а. 

Может нужна другая функция?

Покажи как считываешь?

Автор: Earnest 7.9.2009, 07:17
Цитата(shuttle @  7.9.2009,  07:45 Найти цитируемый пост)
GetClassName - этим получаю нужный элемент(edit, button)

Быть не может... ты что-то путаешь.

Автор: shuttle 7.9.2009, 07:25
диалоговое окно не создаю, оно инородного происхождения, мне надо из него (из edit-ов) считать данные, и в в этом же окне в другие edit-ы записать, а потом на этом окне нажать кнопку (разумеется не мышкой а програмно), и определенные данные благополучно отправляются.

Код

hwnd=GetDesktopWindow();
hwnd=GetWindow(hwnd, GW_CHILD);
    while(hwnd!=0)
    {
        hwnd=GetWindow(hwnd, GW_HWNDNEXT);
        GetWindowText(hwnd,p,100);
        
        if(!wcscmp(p,L"здесь название нужного мне окна")) - ищю нужное мне окно
                                {
                hwnd=GetWindow(hwnd, GW_CHILD);
                while(hwnd!=0)
                {                                
                    GetWindowText(hwnd, szBuf1, sizeof(szBuf1));
                    GetClassName(hwnd, szBuf2, sizeof(szBuf2));
                                        
                    if(!wcscmp(szBuf2,L"Edit"))
                    {
                        error=SetWindowText(hwnd,L"000000"); - пытаюсь свтавить текст в edit    
                        GetWindowText(hwnd, szBuf1, sizeof(szBuf1)); - пытаюсь считать из edit-а                        }
                    
                    hwnd=GetWindow(hwnd, GW_HWNDNEXT);                    
                }
            }
        }
    }


из edit-ов ничего не считывается и не записывается

Автор: 586 7.9.2009, 07:33
GetWindowText не работает для чужих окон. Используй сообщение WM_GETTEXT. А вместо SetWindowText используй WM_SETTEXT.

По кнопке можно кликнуть, послав ей такое собщение:
Код
SendMessage(hButton, BM_CLICK, 0, 0);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)