Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [eVC++] функция обратного вызова 
:(
    Опции темы
Веталька
Дата 13.6.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 2.11.2008

Репутация: нет
Всего: 6



компилиться и работает все отлично, но при нажатии на клавишу ID_SEND  успешно выполняется ее обработка а потом ошибка типа "приложение выполнило недопустимую операцию и будет закрыто".(по нажатию выполн

Код

INT_PTR CALLBACK dlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{    
switch (message) 
    {   case WM_INITDIALOG:
        SetTimer(hDlg,1,500,NULL);
        hEdit=GetDlgItem(hDlg,IDE_EDIT1);
        hListBox=GetDlgItem(hDlg,IDE_LIST1);
        hListBox1=GetDlgItem(hDlg,IDC_LIST2);
        
        
    
                    return true;
            case WM_TIMER:
                                
            
                {
               //тикаем
                }
                
            break;    

    case WM_COMMAND:
        
    switch (LOWORD(wParam))
        {
        case ID_SEND:
            {
        
            DWORD nbs=0;    
            Edit_GetText(GetDlgItem(hDlg, IDE_EDIT1), (LPWSTR)send, 200);
            WriteFile(hPort,send,sizeof(send),&nbs,NULL);
            SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)send);
            
            
            }
        break;
    }
    

        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
         return (INT_PTR)TRUE;
        }
        break;
    }




    return FALSE;

}

попробовал запустить так
Код

                                          //DWORD nbs=0;    
            //Edit_GetText(GetDlgItem(hDlg, IDE_EDIT1), (LPWSTR)send, 200);    получаеться что ошибка здесь, при заборе текста из эдита
            WriteFile(hPort,send,sizeof(send),&nbs,NULL);
            //SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)send);


ошибки нету, помогите разобраться

Это сообщение отредактировал(а) Веталька - 13.6.2010, 22:50


--------------------
Ради зачета студент идет на все, даже на лекции........................ 
PM MAIL ICQ   Вверх
xvr
Дата 13.6.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



А кто такой send?

PM MAIL   Вверх
Веталька
Дата 13.6.2010, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 2.11.2008

Репутация: нет
Всего: 6



char send[256];

Добавлено через 31 секунду
объявлен выше


--------------------
Ради зачета студент идет на все, даже на лекции........................ 
PM MAIL ICQ   Вверх
Dem_max
Дата 14.6.2010, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



вместо этого Edit_GetText(GetDlgItem(hDlg, IDE_EDIT1), (LPWSTR)send, 200); 
сделай так
Edit_GetText(GetDlgItem(hDlg, IDE_EDIT1), send, 200); 

но скорее всего у тебя сругнется, потому что у тебя проект в юникоде, а ты ему обычный char пытаешься подсунуть.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Alexeis
Дата 14.6.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



Цитата(Dem_max @  14.6.2010,  04:34 Найти цитируемый пост)
но скорее всего у тебя сругнется, потому что у тебя проект в юникоде, а ты ему обычный char пытаешься подсунуть.

  eVC по определению юникод. Так что char send[256]; -> wchar_t send[256]; 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
xvr
Дата 14.6.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Веталька @ 13.6.2010,  23:38)
char send[256];

Добавлено @ 23:39
объявлен выше

См. 3й параметр Edit_GetText:
Цитата

cchMax

    The maximum number of characters to copy to the buffer, including the NULL terminator.
В данном контексте characters  имеются в виду Unicode characters, т.е. у вас всего 400 байтов, а буфер на 256  smile 

NB. Приведение типов вроде (LPWSTR) на 99% признак того, что в [неработающем] проекте перепутанны Unicode и ASCII строки (или автор вообще не в курсе, что такое Unicode)  smile 

PM MAIL   Вверх
Веталька
Дата 14.6.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 2.11.2008

Репутация: нет
Всего: 6



сделал юникодный буфер и теперь все ОК, спс за активную помощь smile 


--------------------
Ради зачета студент идет на все, даже на лекции........................ 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.