Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 319
от 08.02.2006, 12:30

Администратор:Калашников О.А.
В рассылке:Подписчиков: 257, Экспертов: 43
В номере:Вопросов: 4, Ответов: 7


Вопрос № 34615: Уважаемые эксперты, я использую компилятор DevC++. Естли в исходном файле, я набираю текст сообщения для вывода на экран, на Английском, все нормально. Естли же на Русском, то на экран выводятся непонятные символы. Подскажите, можно ли н...
Вопрос № 34626: Здравствуйте! Подскажите, пожалуйста, как обработать нажатие на клавишу ENTER. Остальные клавиши обрабатывать получается (как написано в приложении) перехватывая сообщение WM_keydown, но если нажать ENTER, то происходит выход из программ...
Вопрос № 34656: Вопрос такой: в Borland Builder 6 нужно что бы при нажитии на кнопку добавлялось новое поле (Field) к таблице (Table) с задаваемым именем в Edit, тип таблицы - Paradox. При этом все данные в таблице должны сохраняться....
Вопрос № 34663: Здраствуйте у меня вопрос вот я получаю данные в cgi приложении в с++ таким образом if(!strcmp(Req,"POST")){ unsigned int len = atoi( getenv("CONTENT_LENGTH") ); query = (char*)malloc(len+1); fread(query, 1...

Вопрос № 34.615
Уважаемые эксперты, я использую компилятор DevC++. Естли в исходном файле, я
набираю текст сообщения для вывода на экран, на Английском, все нормально.
Естли же на Русском, то на экран выводятся непонятные символы. Подскажите,
можно ли настроить его(компилятор), или он впринципе не воспринимает
кириллицу? Извините за дурацкий вопрос и спасибо.
Отправлен: 02.02.2006, 13:39
Вопрос задал: Gogenot (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: yatagan
Здравствуйте, Gogenot!
попробуй вот так:

#include <windows.h>
#include <iostream.h>

char* Cyr(char *c)
{
char *temp=new char[strlen(c)];
CharToOem(c,temp);
return temp;
}

int main()
{
cout << Cyr("Кирилиця");
}

удачи!
---------
Україна понад усе!
Ответ отправил: yatagan (статус: 4-ый класс)
Отправлен: 02.02.2006, 20:35
Оценка за ответ: 5
Комментарий оценки:
Ксожалению этот гад(DevC++) не имеет в своей библиотеке, файла "windows.h". Как сказано в описании, он вообще под винду не предназначен.
Все равно спасибо.

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Gogenot!
Так как текст программы набирается в Windows,
а работает программа в Dos, то возникают проблемы
при выводе русских букв, вместо которых на экране
появляется абра-кадабра. Это объясняется тем, что
русские буквы в Windows и в DOS кодируются разными числами.
Поэтому в программе, работающей в DOS, нужно изменить кодировку
русских букв.

В Windows русские буквы кодируются числами от 192 до 255,
в DOS - от 128 до 175 (А..Яа..п) и от 224 239 (р..я).

В приложении готовая функция char* RusStr(char *str) для корректировки этого недоразумения, ну и соответственно пример ее использования;)

Успехов!

Приложение:

Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 03.02.2006, 06:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое.


Вопрос № 34.626
Здравствуйте!
Подскажите, пожалуйста, как обработать нажатие на клавишу ENTER.
Остальные клавиши обрабатывать получается (как написано в приложении) перехватывая сообщение WM_keydown, но если нажать
ENTER, то происходит выход из программы.

Приложение:

Отправлен: 02.02.2006, 16:51
Вопрос задал: Robson (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Татьяна
Здравствуйте, Robson!
ну это логично, так как вы передаете обработку дальше стандартному обработчику
"CDialog::OnKeyDown(nChar, nRepCnt, nFlags);"
А он при активной кнопке например "OK" и закрывает окно (ну и программу, если это окно у вас главное)
Чтобы этого избежать, подумайте, какие действия должны выполняться по энтеру и , если код равен, по моему 13 (enter), не передавайте стандартному обработчику, а выполняйте свои действия
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: Студент)
Отправлен: 02.02.2006, 18:35
Оценка за ответ: 5

Отвечает: RedDevil
Здравствуйте, Robson!
Все просто. У тебя обычный диалог наследованный от класса CDialog, так вот в CDialog по умолчанию определены 2 кнопки (Ok и cancel) и созданы обработчики для них. Ок завершают программу и return MB_OK - горячая клавиша enter, а cancel возращает тоже какой-то код - горячая клавиша esc.
Тебе нужно в своем классе переопределить нажатие на эти клавиши.

Приложение:

Ответ отправил: RedDevil (статус: 5-ый класс)
Отправлен: 02.02.2006, 20:26
Оценка за ответ: 5

Отвечает: Zitz
Здравствуйте, Robson!

Тут все не однозначно! Необходимо знать что требуется от проги...
А вот если в окне нет контолов, то могу предложить такой вариант: перегрузите WM_GETDLGCODE таким способом:
UINT CKeyDownDialogDlg::OnGetDlgCode()
{
return DLGC_WANTALLKEYS;
//return CDialog::OnGetDlgCode();
}
Теперь Ваш диалог обрабатывает все key_down (ну кроме sys естественно). Еще раз повторюсь - это только тогда, когда на диалоге ничего нет!

Как экзотический вариант, могу предложить обработать преТранслейт (см. приложение).

А лучше не заворачиваться и обрабатывать ВВОД и ЭСКЕЙП отдельно, т.е. как посоветовали выше, перегрузите OnOk и OnCancel...

З.Ы. Оброботчик CDialog::OnKeyDown(nChar, nRepCnt, nFlags) не стирайте не поможет (злые языки наподсказывали)
З.З.Ы. Как справились с предыдущей проблемой?

Приложение:

---------
Успех неизбежен

Ответ отправил: Zitz (статус: 6-ой класс)
Отправлен: 03.02.2006, 15:33
Оценка за ответ: 5


Вопрос № 34.656
Вопрос такой: в Borland Builder 6 нужно что бы при нажитии на кнопку добавлялось новое поле (Field) к таблице (Table) с задаваемым именем в Edit, тип таблицы - Paradox.
При этом все данные в таблице должны сохраняться.
Отправлен: 03.02.2006, 09:12
Вопрос задал: Мазанов Павел Анатольевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tigran K. Kalaidjian
Здравствуйте, Мазанов Павел Анатольевич!

А в чем таки вопрос?
---------
aqua nostra ignis est
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 03.02.2006, 10:22


Вопрос № 34.663
Здраствуйте у меня вопрос вот я получаю данные в cgi приложении в с++ таким образом

if(!strcmp(Req,"POST")){
unsigned int len = atoi( getenv("CONTENT_LENGTH") );
query = (char*)malloc(len+1);
fread(query, 1, len, stdin);
query[len] = 0;
}
printf("Content-type:text/html;charset=windows-1251; %s", query);
printf("<form action="?act=search" method="POST"><input name="text" type="text"><input type="submit" value="искать"></form>");

как далее привратить в нормальному виду.....
Отправлен: 03.02.2006, 11:39
Вопрос задал: MaxMMA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Straight
Здравствуйте, MaxMMA!

Совершенно не вижу отчего бы благородному дону не воспользоваться библиотеками, специально для этого предназначенными. Например:
http://gnu.tsuren.net/directory/libCGI.html
http://sunhe.jinr.ru/docs/libcgi.html
http://directory.google.ru/Top/Computers/Programming/Languages/C/CGI/Libraries/
Ответ отправил: Straight (статус: 7-ой класс)
Отправлен: 03.02.2006, 11:48


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: $My_version от $My_date
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное