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


Автор: qwerty12 30.12.2005, 13:52
Почкмуто не работает функция GetWindowText мой код:
Код

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hwndEdit;
     static LPTSTR Text;
     PAINTSTRUCT ps;
     HDC hdc;

    switch (message)                  /* handle the messages */
    {
    case WM_CREATE:
hwndEdit = CreateWindow("EDIT",NULL,       //Создаю едит
                                    WS_CHILD | WS_VISIBLE |WS_BORDER, 
                                    
                                    10, 10, 50, 20,   
                                    hwnd,        
                                    (HMENU) 123,   
                                    (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), 
                                    NULL);       
            CreateWindow("BUTTON",NULL,        //создаю кнопку
                                    WS_CHILD | WS_VISIBLE |WS_BORDER, 
                                    
                                    100, 10, 50, 20,  
                                    hwnd,       
                                    (HMENU) 1234,    
                                    (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), 
                                    NULL);      


        break;
    case WM_COMMAND:
        switch(wParam)
        {
        case 1234:
            GetWindowText(hwndEdit,Text,2);//текст должен копироватся в переменную Text
            InvalidateRect(hwnd,NULL,TRUE);


            MessageBeep(-1);//Проверяю работает ли кнопка


                break;
        }

        break;
        case WM_PAINT:
            hdc=BeginPaint(hwnd,&ps);
            TextOut(hdc,100,100,Text,2);//Проверяю скопировался ли текст



            EndPaint(hwnd,&ps);

            break;
        case WM_DESTROY:
            PostQuitMessage (0);     
            break;
        default:                    
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}





Но текст не копируется в едит как только непрабовал ,пытался зделать послав сообшения
SendMessage(hwndEdit,WM_GETTEXT,0,LPARAM(Text));
но опять никакого ркзультата плиз покажите где ошибка или приведите работаюший пример
копиравания текста из едита в переменную.

Автор: Aleksandor 30.12.2005, 14:06
Попробуй вместо static LPTSTR Text;
сделать static TCHAR Text[250];

и вместо GetWindowText(hwndEdit,Text,2);
используй GetWindowText(hwndEdit,Text,250);
..=====================
или так
static LPTSTR Text=(LPTSTR)malloc (sizeof(TCHAR)*250);
GetWindowText(hwndEdit,Text,250);

Автор: JoyEx 30.12.2005, 14:08
Никак не удалить своё сообщение. Нехорошо!

Автор: qwerty12 30.12.2005, 16:12
AleksandorО сенкс все заработало такой tit вопрос чем можно конверктировать static TCHAR Text[250]; в float или double?

Автор: Aleksandor 30.12.2005, 16:21
Строку в double? strtod или atof или _tcstod (UNICODE)

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