Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 817
#1

Curl не работает в оконном приложении winapi - C++

31.07.2014, 22:36. Просмотров 595. Ответов 16
Метки нет (Все метки)

Вообщм проблема, в консольном приложении курл работает нормально, в оконном нет, функция curl_easy_perform() возвращает ошибку 23, хз вообще что предпринять,

Вот код, если коме не лень глянуть но нет под рукой библиотек курла то скажите, скинцу весь проект

строки 148 - 160, с курлом

C++ (Qt)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <Windows.h>
#include <tchar.h>
#include "Header.h"
#include "curl.h"
#include "dirent.h"
#pragma comment(lib,"curllib.lib")
 
static HINSTANCE hinstance = NULL;
static LPCWSTR CLASS_NAME = L"MyFirstClass";
static LPCWSTR TITLE = L"Parser";
static HWND h_wnd = NULL;
static HWND h_button = NULL;
static HWND h_textarea_1 = NULL;
static HWND h_textarea_2 = NULL;
static HWND label = NULL;
static HWND label2 = NULL;
 
#define ID_BUTTON (WM_USER + 1)
#define ID_TEXTAREA_1 (WM_USER + 2)
#define ID_TEXTAREA_2 (WM_USER + 3)
 
static LRESULT CALLBACK WndProc ( HWND,UINT,WPARAM,LPARAM);
 
int WINAPI _tWinMain( HINSTANCE _hinstance,HINSTANCE _hprevInstance, LPTSTR _lpCommandLine, int nCmdShow){
 
    ::hinstance = _hinstance;
 
    WNDCLASSEX wc = {0};
 
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW; 
    wc.lpfnWndProc      = WndProc;                              
    wc.cbClsExtra       = 0;                                    
    wc.cbWndExtra       = 0;                                    
    wc.hInstance        = ::hinstance;                          
    wc.hIcon            = LoadIcon( NULL, IDI_APPLICATION );    
    wc.hCursor          = LoadCursor( NULL, IDC_ARROW );        
    wc.hbrBackground    = ( HBRUSH )( COLOR_WINDOW + 1 );       
    wc.lpszClassName    = CLASS_NAME;                           
    wc.hIconSm          = LoadIcon( NULL, IDI_APPLICATION );
 
    RegisterClassEx(&wc);
 
    ::h_wnd = CreateWindowEx(NULL,CLASS_NAME,
        TITLE,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, NULL,    
        600, 500,
        NULL,   
        NULL,
        ::hinstance,    
        NULL);
 
 
    ::h_button = CreateWindowEx(NULL,L"BUTTON",
        L"Перевести",
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        0,105,  
        100, 80,
        ::h_wnd,    
        ( HMENU )ID_BUTTON,
        ::hinstance,    
        NULL);
 
 
    ::label = CreateWindowEx( NULL,                 // По умолчанию
        L"STATIC",                  // Класс окна
        L"URL:",    // Надпись
        WS_CHILD | WS_VISIBLE,      // Стиль
        5,5,    
        40, 20,         // Размер
        ::h_wnd,                            // Родительское окно
        ( HMENU )ID_BUTTON,     // ID
        ::hinstance,                    // Дескриптор приложения
        NULL );                     // Параметров нет
 
    ::label2 = CreateWindowEx( NULL,                    // По умолчанию
        L"STATIC",                  // Класс окна
        L"Result:", // Надпись
        WS_CHILD | WS_VISIBLE,      // Стиль
        400,5,  
        50, 20,         // Размер
        ::h_wnd,                            // Родительское окно
        ( HMENU )ID_BUTTON,     // ID
        ::hinstance,                    // Дескриптор приложения
        NULL );                     // Параметров нет
 
 
    ::h_textarea_1 = CreateWindowEx(NULL,L"EDIT",
        L"",
        WS_CHILD | WS_VISIBLE | WS_BORDER,
        45,5,   
        200, 20,
        ::h_wnd,    
        ( HMENU )ID_TEXTAREA_1,
        ::hinstance,    
        NULL);
 
    ::h_textarea_2 = CreateWindowEx(NULL,L"EDIT",
        L"",
        WS_CHILD | WS_VISIBLE | WS_BORDER| ES_MULTILINE | ES_AUTOVSCROLL,
        260,35, 
        300, 400,
        ::h_wnd,    
        ( HMENU )ID_TEXTAREA_2,
        ::hinstance,    
        NULL);
 
    ShowWindow(::h_wnd,nCmdShow);
    UpdateWindow( ::h_wnd );    
 
    MSG msg = { 0 };
 
    while ( GetMessage( &msg, NULL, 0, 0 ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
 
 
    DestroyWindow( ::h_button );
    DestroyWindow( ::h_textarea_1 );
    DestroyWindow( ::h_textarea_2 );
    DestroyWindow( ::h_wnd );
 
 
    return (int) msg.wParam;
 
 
 
};
 
 
 
static LRESULT CALLBACK WndProc ( HWND h_wnd,UINT msg,WPARAM wParam,LPARAM lParam){
 
 
    if( msg == WM_COMMAND ) {
 
        if( wParam == ID_BUTTON )
        {
            int len = GetWindowTextLength(::h_textarea_1);
            wstring text;
            text.resize(len+1);
            SendMessage(::h_textarea_1,WM_GETTEXT,( WPARAM ) len+1,( LPARAM ) &text[0]);
 
 
            CURL *curl;
            CURLcode res;
            string result;
 
            curl = curl_easy_init();
            if(curl) {
                curl_easy_setopt(curl, CURLOPT_URL, "http://mh-proxy.ru");
                curl_easy_setopt(curl, CURLOPT_HEADER, 1);
                res = curl_easy_perform(curl);
                curl_easy_cleanup(curl);
            }
 
            result = res;
 
            SendMessage(::h_textarea_2,WM_SETTEXT,( WPARAM )NULL,( LPARAM ) result.c_str( ));
        }
    }else if( msg == WM_DESTROY ) {
        PostQuitMessage(0);
    }else{
        return DefWindowProc( h_wnd,msg,wParam,lParam );
    }
 
 
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2014, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Curl не работает в оконном приложении winapi (C++):

В консольном приложении код работает нормально, в оконном - нет - C++
суть в чем. используется один и тот же модуль ATD. Но в консольном приложении работает нормально все, все методы. А вот в окне формы...

Вывод консоли в оконном приложении - C++
Мне нужно затестировать как работает функция, т.е. выводить каждую операцию... Что - то неправильно клеит биты у меня...void...

Использовать WINAPI функцию StrToIntEx в консольном приложении - C++
Нужно в консольном приложении читать 16ричную строку в виде string и переводить её в число, руками делать это лень (да и к чему писать...

SFML в оконном приложении - SFML
Здравствуйте! Хочу сделать окно sfml в c++ form, например, в панели. Гугл ни чем не смог помочь. Может есть какие-то идеи, как можно это...

Асинхронный сервер в оконном приложении - C#
Добрый день! Скопипастил с msdn ассинхронные клиент и сервер (вообще первый раз пытаюсь сделать клиент-серверное приложение), но не...

Консольное окно в Оконном приложении - Delphi
Скажите пожалуйста, как имея оконное приложение ($APPTYPE GUI) с формочками и прочими визуальными компонентами, создать и использовать...

16
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2014, 23:16 #2
Цитата Сообщение от mh-coder Посмотреть сообщение
функция curl_easy_perform() возвращает ошибку 23
Когда возвращает? При запуске?

Добавлено через 15 минут
Вот так ошибку не возвращает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
          CURL *curl;
          CURLcode res;
          string result;
          
          curl = curl_easy_init();
          if(curl) 
          {
            curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
            curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
            res = curl_easy_perform(curl);
            
            if(res != CURLE_OK)
              fprintf(stderr, "curl_easy_perform() failed: %s\n",
                      curl_easy_strerror(res));
            curl_easy_cleanup(curl);
          }
0
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 817
31.07.2014, 23:23  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Когда возвращает? При запуске?
не, ошибок никаких на экран не выводит, просто функция curl_easy_perform() возвращает ошибку 23(смотрю через дебаггер) и естественно записывает в result пустой результат
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
01.08.2014, 00:18 #4
Описание этой ошибки ?
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 00:20 #5
Цитата Сообщение от mh-coder Посмотреть сообщение
просто функция curl_easy_perform() возвращает ошибку 23(смотрю через дебаггер)
...
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот так ошибку не возвращает:
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
01.08.2014, 00:24 #6
Ага а где коде проверка curl_easy_strerror() ? У ТС оконное приложение, вероятно он тупо впендюрил код куда попало.
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 00:38 #7
Если, в коде ТС, заменить "http://mh-proxy.ru" на "http://example.com", то ошибка исчезает, а так (curl_easy_strerror(res)) выдаёт: "Failed writing received data to disk/application"
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 01:08 #8
Что-то выводит:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//функция обратного вызова
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  //переменная - результат, по умолчанию нулевая
  int result = 0;
  //проверяем буфер
  if (buffer != NULL)
  {
    //добавляем к буферу строки из data, в количестве nmemb
    buffer->append(data, size * nmemb);
    //вычисляем объем принятых данных
    result = size * nmemb;
  }
  //вовзращаем результат
  return result;
}
 
 static LRESULT CALLBACK WndProc ( HWND h_wnd,UINT msg,WPARAM wParam,LPARAM lParam){
 
 
    if( msg == WM_COMMAND ) {
 
        if( wParam == ID_BUTTON )
        {
            int len = GetWindowTextLength(::h_textarea_1);
            wstring text;
            text.resize(len+1);
            SendMessage(::h_textarea_1,WM_GETTEXT,( WPARAM ) len+1,( LPARAM ) &text[0]);
 
            CURL *curl;
            CURLcode res;
            string result;
 
            curl = curl_easy_init();
            if(curl) 
            {
                curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
                curl_easy_setopt(curl, CURLOPT_HEADER, 1);
                //указываем функцию обратного вызова для записи получаемых данных
                curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
                //указываем куда записывать принимаемые данные
                curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
                
                res = curl_easy_perform(curl);
 
                if(res != CURLE_OK)
                {
                  ofstream fout("curl.txt");
                  fout << curl_easy_strerror(res);
                }
 
                curl_easy_cleanup(curl);
            }
 
            SendMessage(::h_textarea_2,WM_SETTEXT,( WPARAM )NULL,( LPARAM ) result.c_str( ));
        }
    }else if( msg == WM_DESTROY ) {
        PostQuitMessage(0);
    }else{
        return DefWindowProc( h_wnd,msg,wParam,lParam );
    }
 
    return 0;
}
0
Миниатюры
Curl не работает в оконном приложении winapi  
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 02:39 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если юникод убрать, то совсем хорошо:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#include <Windows.h>
#include <tchar.h>
//#include "Header.h"
#include <curl.h>
//#include "dirent.h"
#include <string>
#include <fstream>
using namespace std;
#pragma comment(lib,"curllib.lib")
 
static HINSTANCE hinstance = NULL;
static LPCSTR CLASS_NAME = "MyFirstClass";
static LPCSTR TITLE = "Parser";
static HWND h_wnd = NULL;
static HWND h_button = NULL;
static HWND h_textarea_1 = NULL;
static HWND h_textarea_2 = NULL;
static HWND label = NULL;
static HWND label2 = NULL;
 
#define ID_BUTTON (WM_USER + 1)
#define ID_TEXTAREA_1 (WM_USER + 2)
#define ID_TEXTAREA_2 (WM_USER + 3)
 
static LRESULT CALLBACK WndProc ( HWND,UINT,WPARAM,LPARAM);
 
int WINAPI _tWinMain( HINSTANCE _hinstance,HINSTANCE _hprevInstance, LPTSTR _lpCommandLine, int nCmdShow)
{
 
    ::hinstance = _hinstance;
 
    WNDCLASSEX wc = {0};
 
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW; 
    wc.lpfnWndProc      = WndProc;                              
    wc.cbClsExtra       = 0;                                    
    wc.cbWndExtra       = 0;                                    
    wc.hInstance        = ::hinstance;                          
    wc.hIcon            = LoadIcon( NULL, IDI_APPLICATION );    
    wc.hCursor          = LoadCursor( NULL, IDC_ARROW );        
    wc.hbrBackground    = ( HBRUSH )( COLOR_WINDOW + 1 );       
    wc.lpszClassName    = CLASS_NAME;                           
    wc.hIconSm          = LoadIcon( NULL, IDI_APPLICATION );
 
    RegisterClassEx(&wc);
 
    ::h_wnd = CreateWindowEx(NULL,CLASS_NAME,
        TITLE,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, NULL,    
        600, 500,
        NULL,   
        NULL,
        ::hinstance,    
        NULL);
 
 
    ::h_button = CreateWindowEx(NULL,"BUTTON",
        "Перевести",
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        0,105,  
        100, 80,
        ::h_wnd,    
        ( HMENU )ID_BUTTON,
        ::hinstance,    
        NULL);
 
 
    ::label = CreateWindowEx( NULL,                 // По умолчанию
        "STATIC",                  // Класс окна
        "URL:",    // Надпись
        WS_CHILD | WS_VISIBLE,      // Стиль
        5,5,    
        40, 20,         // Размер
        ::h_wnd,                            // Родительское окно
        ( HMENU )ID_BUTTON,     // ID
        ::hinstance,                    // Дескриптор приложения
        NULL );                     // Параметров нет
 
    ::label2 = CreateWindowEx( NULL,                    // По умолчанию
        "STATIC",                  // Класс окна
        "Result:", // Надпись
        WS_CHILD | WS_VISIBLE,      // Стиль
        400,5,  
        50, 20,         // Размер
        ::h_wnd,                            // Родительское окно
        ( HMENU )ID_BUTTON,     // ID
        ::hinstance,                    // Дескриптор приложения
        NULL );                     // Параметров нет
 
 
    ::h_textarea_1 = CreateWindowEx(NULL,"EDIT",
        "",
        WS_CHILD | WS_VISIBLE | WS_BORDER,
        45,5,   
        200, 20,
        ::h_wnd,    
        ( HMENU )ID_TEXTAREA_1,
        ::hinstance,    
        NULL);
 
    ::h_textarea_2 = CreateWindowEx(NULL,"EDIT",
        "",
        WS_CHILD | WS_VISIBLE | WS_BORDER| ES_MULTILINE | ES_AUTOVSCROLL,
        260,35, 
        300, 400,
        ::h_wnd,    
        ( HMENU )ID_TEXTAREA_2,
        ::hinstance,    
        NULL);
 
    ShowWindow(::h_wnd,nCmdShow);
    UpdateWindow( ::h_wnd );    
 
    MSG msg = { 0 };
 
    while ( GetMessage( &msg, NULL, 0, 0 ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
 
 
    DestroyWindow( ::h_button );
    DestroyWindow( ::h_textarea_1 );
    DestroyWindow( ::h_textarea_2 );
    DestroyWindow( ::h_wnd );
 
 
    return (int) msg.wParam;
 
 
 
};
 
//функция обратного вызова
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  //переменная - результат, по умолчанию нулевая
  int result = 0;
  //проверяем буфер
  if (buffer != NULL)
  {
    //добавляем к буферу строки из data, в количестве nmemb
    buffer->append(data, size * nmemb);
    //вычисляем объем принятых данных
    result = size * nmemb;
  }
  //вовзращаем результат
  return result;
}
 
 static LRESULT CALLBACK WndProc ( HWND h_wnd,UINT msg,WPARAM wParam,LPARAM lParam){
 
 
    if( msg == WM_COMMAND ) 
    {
 
        if( wParam == ID_BUTTON )
        {
            int len = GetWindowTextLength(::h_textarea_1);
            string text;
            text.resize(len+1);
            SendMessage(::h_textarea_1, WM_GETTEXT, ( WPARAM ) len+1, ( LPARAM ) &text[0]);
 
            CURL *curl;
            CURLcode res;
            string result;
 
            curl = curl_easy_init();
            if(curl) 
            {
                curl_easy_setopt(curl, CURLOPT_URL, text.c_str());
                curl_easy_setopt(curl, CURLOPT_HEADER, 1);
                //указываем функцию обратного вызова для записи получаемых данных
                curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
                //указываем куда записывать принимаемые данные
                curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
                
                res = curl_easy_perform(curl);
 
                if(res != CURLE_OK)
                {
                  ofstream fout("curl.txt");
                  fout << curl_easy_strerror(res);
                }
 
                curl_easy_cleanup(curl);
            }
 
            SendMessage(::h_textarea_2,WM_SETTEXT,( WPARAM )NULL,( LPARAM ) result.c_str( ));
        }
    }
    else if( msg == WM_DESTROY ) 
    {
        PostQuitMessage(0);
    }else
    {
        return DefWindowProc( h_wnd,msg,wParam,lParam );
    }
 
    return 0;
}
1
Миниатюры
Curl не работает в оконном приложении winapi   Curl не работает в оконном приложении winapi  
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 817
01.08.2014, 11:50  [ТС] #10
такой вопросец,
когда так curl_easy_setopt(curl, CURLOPT_URL, "http://www.cyberforum.ru"); то норм
а когда передаю в патаметре строку curl_easy_setopt(curl, CURLOPT_URL, text); то нифига неработает, почему? что функция должна принимать в параметрах?
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
01.08.2014, 12:19 #11
Блог: Библиотека libcurl
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 19:55 #12
Цитата Сообщение от mh-coder Посмотреть сообщение
такой вопросец,
когда так curl_easy_setopt(curl, CURLOPT_URL, "http://www.cyberforum.ru"); то норм
а когда передаю в патаметре строку curl_easy_setopt(curl, CURLOPT_URL, text); то нифига неработает, почему? что функция должна принимать в параметрах?
Потому, что последняя буква ('u') в окно ввода не помещается.
0
Миниатюры
Curl не работает в оконном приложении winapi  
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2014, 20:03 #13
Цитата Сообщение от alsav22 Посмотреть сообщение
что функция должна принимать в параметрах?
Смотрим выложенный код. Ссылку на форум, с описанием работы с curl, отправил в л/с.

Добавлено через 5 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Потому, что последняя буква ('u') в окно ввода не помещается.
Это если правильный параметр задан (text.c_str()).
0
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 817
06.08.2014, 19:53  [ТС] #14
а тут еще вопрос возник, curl возвращат результат только в string, и получаются что если на сайте есть русские буквы(или китайские) то вместо них будут кракозябры, как вернуть результат в wstring или как быть в данном случае?
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
06.08.2014, 20:30 #15
Цитата Сообщение от mh-coder Посмотреть сообщение
а тут еще вопрос возник, curl возвращат результат только в string, и получаются что если на сайте есть русские буквы(или китайские) то вместо них будут кракозябры, как вернуть результат в wstring или как быть в данном случае?
сurl возвращает результат в char т.е в байтах, так что утверждение полностью не верное.
Что бы не было кракозаябл нужно узнать в какой кодировки символы, и делать соответствующую перекодировку, например с помощью iconv (только там описание для С++Builder)
0
06.08.2014, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2014, 20:30
Привет! Вот еще темы с ответами:

Создание потока в оконном приложении - C (СИ)
Как грамотно создать поток в оконном приложении? Я планирую для этой цели использовать функцию Win32 API CreateThread(). В инете нашёл...

Игра со случайными числами в оконном приложении - C#
Добрый день. Условие такое: два игрока по очереди нажимающие на кнопку (кнопки), по очереди выводятся рандомные числа. У кого сумма...

Создание глобальных переменных и функций в оконном приложении С++ - C++/CLI WinForms
Доброе утро! Извиняюсь, что беспокою Вас - просто сам недавно перешел с С# на С++, в связи с чем вопрос: я пишу программу для вычисления...

Как выполнить команду shutdown в оконном приложении? - Visual C++
Как выполнить команду shutdown в оконном приложении?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.