7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164

Код не работает в кодировке unicode, но работает в многобайтной кодировке

15.10.2021, 20:49. Показов 865. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как переделать код, чтобы он работал в кодировке unicode?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
CHAR str[80];
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // тут мы будем обрабатывать сообщение посылаемые к примеру при нажатии кнопки
    switch (message)
    {
        HDC hdc;
        PAINTSTRUCT paint;  // Структура PAINTSTRUCT содержит информацию для приложения. Эта информация может использоваться для рисования клиентской области окна, принадлежащего этому приложению.
 
    case WM_CHAR: // срабатывает при нажатии клавиши. Сообщение WM_CHAR содержит символьный код нажатой клавиши. 
    {
        hdc = GetDC(hWnd); // извлекает дескриптор контекста устройства (DC) для клиентской области указанного окна
        TextOut(hdc, 1, 1, "      ", 6); // записывает строку символов в указанном месте, параметры - (какое окно, x, y, текст, Длина строки)
        sprintf_s(str, "%c", wParam);   // преобразует wParam в букву с клавиатуры, при испльзовании sprintf пишет, что это небезопасно
        
        TextOut(hdc, 1, 1, str, 1); // записывает строку символов в указанном месте, параметры - (какое окно, x, y, текст, Длина строки)
        ReleaseDC(hWnd, hdc);
    }
 
    case WM_DESTROY:          // при нажатии на крестик (правый верхний угол), прописывать обязательно
    {
        PostQuitMessage(0);
        break;
    }
 
    case WM_CREATE:         // запускается при создании главного (родительского) окна (hWnd) всего 1 раз
    {
        break;
    }
 
    case WM_COMMAND:          // срабатывает при нажатии на кнопку
    {
        break;
    }
 
 
    default: return DefWindowProc(hWnd, message, wParam, lParam);
    }
 
    return 0;
}
Жалуется в основном на CHAR str[80];
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2021, 20:49
Ответы с готовыми решениями:

Код символ в кодировке Unicode
Есть функция - function Chr(a: word): char; - Преобразует код в символ в кодировке Unicode. Ей нужно отправить код символа введённого с...

Смайлики в кодировке Unicode
Привет, форумчане. Пишу чат, возник вопрос, существуют ли какие-либо смайлики для кодировки unicode?

Таблица из символов в кодировке Unicode
Доброго времени суток! необходимо составить программу, которая рисует таблицу из символов в кодировке Unicode. Двигаясь произвольно по...

2
Модератор
Эксперт С++
 Аватар для zss
13775 / 10968 / 6491
Регистрация: 18.12.2011
Сообщений: 29,250
15.10.2021, 21:09
Лучший ответ Сообщение было отмечено DarkShaddow как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <windows.h>
#include <stdio.h>
WCHAR str[80];
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // тут мы будем обрабатывать сообщение посылаемые к примеру при нажатии кнопки
    switch (message)
    {
        HDC hdc;
        PAINTSTRUCT paint;  // Структура PAINTSTRUCT содержит информацию для приложения. Эта информация может использоваться для рисования клиентской области окна, принадлежащего этому приложению.
 
    case WM_CHAR: // срабатывает при нажатии клавиши. Сообщение WM_CHAR содержит символьный код нажатой клавиши. 
        {
            hdc = GetDC(hWnd); // извлекает дескриптор контекста устройства (DC) для клиентской области указанного окна
            TextOut(hdc, 1, 1, L"      ", 6); // записывает строку символов в указанном месте, параметры - (какое окно, x, y, текст, Длина строки)
            wsprintf(str, L"%c", wParam);   // преобразует wParam в букву с клавиатуры, при испльзовании sprintf пишет, что это небезопасно
 
            TextOut(hdc, 1, 1, str, 1); // записывает строку символов в указанном месте, параметры - (какое окно, x, y, текст, Длина строки)
            ReleaseDC(hWnd, hdc);
        }
 
    case WM_DESTROY:          // при нажатии на крестик (правый верхний угол), прописывать обязательно
        {
            PostQuitMessage(0);
            break;
        }
 
    case WM_CREATE:         // запускается при создании главного (родительского) окна (hWnd) всего 1 раз
        {
            break;
        }
 
    case WM_COMMAND:          // срабатывает при нажатии на кнопку
        {
            break;
        }
 
 
    default: return DefWindowProc(hWnd, message, wParam, lParam);
    }
 
    return 0;
}
1
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
15.10.2021, 21:25  [ТС]
Спасибо, все работает, но единственное не пойму, чем отличается wsprintf от sprintf_s.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2021, 21:25
Помогаю со студенческими работами здесь

Формат строки в кодировке Unicode?
Какой формат соответствует строке в кодировке UNICODE?

Перекодирование строки в кодировке KOI в строку в кодировке Windows-1251 и обратно
Помогите пожалуйста сделать. Задание. Кодировщик. Написать программу, перекодирующую строку в кодировке KOI в строку в кодировке...

Вывод информации в файл в кодировке unicode
Доброго времени суток! У меня такая проблема: Пишем с другом небольшой проект на разных языках, он на C, я на delphi. Для работы...

Как записать переменную в кодировке Unicode
Здравствуйте! Сразу же покажу пример: LPWSTR szMsg1; GetClassNameW(hWnd, szMsg1, 20); В этом примере функция ругается, потому что...

Сохранить текстовый документ в кодировке Unicode
Создаю блокнот вот таким образом: StreamWriter sw = new StreamWriter(&quot;test.txt&quot;); Но по умолчанию он создаётся в кодировке ANSI, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru