Форум программистов, компьютерный форум CyberForum.ru

Набор текста (Не выводятся русские буквы, WideCharToMultiByte) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как ограничить цикл ? http://www.cyberforum.ru/cpp-beginners/thread246036.html
Вот придумал программку, где соревнуются буковки "А" и "E". Массив 15:20. Буковки начинают свой эрэндэшный путь из координат 0:0 и 14:19 - соответственно. Гол защитывается, когда буковка достигнет "домашней" координаты оппонента. Я прошу помочь: 1. в ограничении цикла, чтобы кол-во движений каждой из букв не было больше, к примеру, 100; 2. также необходимо после каждого гола вернуть буковки...
C++ Найти значение выражения Необходимо найти значение выражения y= a^x-sin(x). Все хорошо, вот только а должен быть больше нуля и не равен единице. Не знаю как после проверки(если введенный коэффициент не не удовлетворяет условию ) вернуться снова к вводу а. Зарание спасибо. http://www.cyberforum.ru/cpp-beginners/thread246031.html
Ввод из файла и вывод в файл C++
#include<iostream> #include<iomanip> #include<ctime> #include<cstdlib> int main(){ const int n=6, m=7; int mat; for(int i=0; i<n*m; i++){ mat=rand()%20-10;
Работа с файлами C++
Добрый день! Помогите, пожалуйста с задачей -- я в С++ совсем чайник. Просто хотя бы подскажите каким методом делать или пример какой-нибудь дайте. Надо, чтобы программа принимала 1 параметр командной строки -- имя файла, в котором содержится список дел. Я так поняла, что это выглядит приблизительно так: (подскажите, если что не правильно) #include <iostream> #include <fstream>...
C++ Что тут не так? http://www.cyberforum.ru/cpp-beginners/thread246000.html
#include <iostream> #include <conio.h> using namespace std; bool is_it(char *); int main(){ char *str=new char; cout <<"Enter string > "; cin.getline(str,255); int n=is_it(str);
C++ новичок с вопросом Здравствуйте форумчане у меня вот такой вопрос к вам как хотящему начать изучать язык программирования: Собственно и сам вопрос: можно ли построить программу на голосовом управлении?То есть говоришь-выполняет...???И если да то что потребуется для этого?(дополнительные модули...) у меня же есть это ru_visual_studio_2010_ultimate Заранее благодарен подробнее

Показать сообщение отдельно
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
21.02.2011, 00:24     Набор текста (Не выводятся русские буквы, WideCharToMultiByte)
Всем добрый день.
Программирую ввод текста в строку, для этого ловлю параметр по WM_CHAR. Но там он возвращаешься в wchar_t, а для вывода текста нужны char.

C++
1
2
3
4
5
6
7
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
  switch( msg )
  {
  case WM_CHAR:
    Gameplay.Type(wParam);
    break;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char wchar2char(const wchar_t ws)
{
  char s;
  WideCharToMultiByte(CP_ACP, 0, &ws, -1, &s, 1, NULL, 0);
  return s;
}
 
void L_Gameplay::Type(WPARAM wParam)
{
  wchar_t ws;
  memcpy(&ws, &wParam, 2);
  char s = wchar2char( ws );
  Interface.Type(s);
}
С английскими буквами все норм, а русские - кракозябры всякие. Перепробовал все варианты первого параметра WideCharToMultiByte - просто разные кракозябры в русском.

Из гугла выцепил два возможных решения:
1) Необходимо преобразовать в кодировку CP1251
2) Все в порядке, просто русские буквы по номерам идут дальше, и нужно использовать тип unsigned char

Помогите пожалуйста разобраться в чем тут дело.

Пробовал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned char wchar2char(const wchar_t ws)
{
  unsigned char s;
  WideCharToMultiByte(CP_ACP, 0, &ws, -1, &s, 1, NULL, 0);
  return s;
}
 
void L_Gameplay::Type(WPARAM wParam)
{
  wchar_t ws;
  memcpy(&ws, &wParam, 2);
  unsigned char s = wchar2char( ws );
  Interface.Type(s);
}
В итоге

error C2664: 'WideCharToMultiByte' : cannot convert parameter 5 from 'unsigned char *' to 'LPSTR'
Если вообще дело в unsigned char а не чем-то другом =(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru