Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283

Каким образом создать поток, в который перенести код сортировки массива?

13.03.2015, 23:36. Показов 2509. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Спасибо keepitsimple3, за код
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
#include "lb.h" //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain (HINSTANCE hInstance, 
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine, int nCmdShow)
                       // функция WinMain вызывается системой как начальная точка входа
                       // hInstance идентифицирует текущий образец прикладной программы.
                       // hPrevInstance идентифицирует предыдущий образец прикладной программы.
                       // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
                       // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style           = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc     = WndProc; //указатель на функцию окна
    wc.cbClsExtra      = 0;  //нет дополнительных данных класса
    wc.cbWndExtra      = 0;  // нет дополнительных данных окна
    wc.hInstance       = hInstance; //идентификатор текущего приложения
    wc.hIcon           = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground   = (HBRUSH)(COLOR_WINDOW +1); //цвет фона окна
    wc.lpszMenuName    = NULL; //меню нет
    wc.lpszClassName   = _T("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(_T("lbWinApi"), _T("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
           WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
           400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int) msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
// ini wmId, wmevent;
    PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    HDC hdc;         //создаём контекст устройства
    RECT rect;
    TCHAR text[] = _T("Каркас приложения на WinApi группа 203 Лавров В.В."); //вывод текста в окне программы
HWND hweIn;
HWND hweOut;
    switch (message)
    {
case WM_CREATE :
        hweIn = CreateWindow(_T("EDIT"), _T("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM) s);
       hweIn = CreateWindow(_T("BUTTON"), _T("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(_T("STATIC"), _T("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
необходимо создать поток, в который перенести код сортировки массива, осуществлять поток в коде обработчика нажатия кнопки

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
7VOID main(VOID)
8{
9.      DWORD dwThreadId, dwThrdParam = 1;
10.     HANDLE hThread;
11.     char szMsg[80];
12.     hThread = CreateThread(
13.                  NULL,            // атрибуты безопасности по умолчанию
14.                  0,               // размер стека используется по умолчанию
15.                  ThreadFunc,      // функция потока
16.                  &dwThrdParam,    // аргумент функции потока
17.                  0,               // флажки создания используются по умолчанию
18.                  &dwThreadId);    // возвращает идентификатор потока
19.     // При успешном завершении проверяет возвращаемое значение.
20.           if (hThread ==NULL)
21.           {
22.               wsprintf( szMsg, "CreateThread failed." );
23.               MessageBox( NULL, szMsg, "main", MB_OK );
24.           }
25.           else
26.           {
27.               _getch();
28.               CloseHandle( hThread );
29.           }
30. }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2015, 23:36
Ответы с готовыми решениями:

Каким образом реализовать поток с помощью BackgroundWorker?
Привет всем! Каким образом реализовать поток с помощью backGrounder (в этом потоке происходит считывание данных из COM-порта)?...

Можно ли и каким образом получить поток экземпляра Класса?
Доброго дня форумчанам. Возник такой вопрос - можно ли добиться у произвольных классов чего-то похожего на UiElement.Dispatcher?...

Алгоритм быстрой сортировки. Каким образом меняются исходные индексы?
del

20
14.03.2015, 00:56

Не по теме:

Цитата Сообщение от vjacheslav9 Посмотреть сообщение
Спасибо keepitsimple3, за код
Это не мой код :swoon:

0
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
14.03.2015, 17:18  [ТС]
keepitsimple3, сори, подправил кое что и вот что вышло

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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain (HINSTANCE hInstance, 
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine, int nCmdShow)
                       // функция WinMain вызывается системой как начальная точка входа
                       // hInstance идентифицирует текущий образец прикладной программы.
                       // hPrevInstance идентифицирует предыдущий образец прикладной программы.
                       // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
                       // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style           = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc     = WndProc; //указатель на функцию окна
    wc.cbClsExtra      = 0;  //нет дополнительных данных класса
    wc.cbWndExtra      = 0;  // нет дополнительных данных окна
    wc.hInstance       = hInstance; //идентификатор текущего приложения
    wc.hIcon           = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground   = (HBRUSH)(COLOR_WINDOW +1); //цвет фона окна
    wc.lpszMenuName    = NULL; //меню нет
    wc.lpszClassName   = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
           WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
           400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int) msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
// ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
HWND hweIn;
//HWND hweOut;
    switch (message)
    {
case WM_CREATE :
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM) s);
        DWOID WINAOI ThreadFunc(LPVOID lpParam)
{
       Char szMsg[80];
       Wsprintf(szMsg; “Parameter = %d”, *(DWORD*)lpParam);
       MessageBox( NULL, szMsg, “ ThresdFunc”, MB_OK );
VOID main(VOID)
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
char szMsg[80];
hThread = CreateThread(
 NULL,            // атрибуты безопасности по умолчанию
 0,               // размер стека используется по умолчанию
 ThreadFunc,      // функция потока
&dwThrdParam,    // аргумент функции потока
18.                  0,               // флажки создания используются по умолчанию
19.                  &dwThreadId);    // возвращает идентификатор потока
20.     // При успешном завершении проверяет возвращаемое значение.
21.           if (hThread ==NULL)
22.           {
23.               wsprintf( szMsg, "CreateThread failed." );
24.               MessageBox( NULL, szMsg, "main", MB_OK );
25.           }
26.           else;
27.           {
28.               _getch();
29.               CloseHandle( hThread );
30.           }
31. }
 
       hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
и опять туча ошибок... помогите пожалуйста

Добавлено через 9 часов 58 минут
подскажите, как выполнить эту функцию, в литературе найти не могу подходящий вариант

Добавлено через 7 минут
пытаюсь реализовать

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
{
    int tmp=a[i];
    a[i]=a[j];
    a[j]=tmp;
    Sleep(50);//для наглядности
}
 
DWORD WINAPI Thread1( void* pParams )//поток сортировки
{
    for (i=0;i<n-1;i++)
    for (j=i+1;j<n;j++)
    if (a[i]>a[j])
    {
        HANDLE hThread2=CreateThread(NULL,0,Thread2,NULL,0,NULL);//запускаем обмен в отдельном потоке
        WaitForSingleObject(hThread2,INFINITE);//и ждем окончания этого потока
        //если убрать, то сортировка будет неправильной
        CloseHandle(hThread2);
    }
}
 
int main()
{
    for (i=0; i<n; i++) {a[i]=rand()%10; printf("%d ", a[i]); }; printf("\n");
 
    hThread1=CreateThread(NULL,0,Thread1,NULL,0,NULL);//запускаем сортировку
    WaitForSingleObject(hThread1,INFINITE);//ждём окончания
 
    for (i=0; i<n; i++) printf("%d ", a[i]);
}
и сам код
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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain (HINSTANCE hInstance, 
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine, int nCmdShow)
                       // функция WinMain вызывается системой как начальная точка входа
                       // hInstance идентифицирует текущий образец прикладной программы.
                       // hPrevInstance идентифицирует предыдущий образец прикладной программы.
                       // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
                       // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style           = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc     = WndProc; //указатель на функцию окна
    wc.cbClsExtra      = 0;  //нет дополнительных данных класса
    wc.cbWndExtra      = 0;  // нет дополнительных данных окна
    wc.hInstance       = hInstance; //идентификатор текущего приложения
    wc.hIcon           = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground   = (HBRUSH)(COLOR_WINDOW +1); //цвет фона окна
    wc.lpszMenuName    = NULL; //меню нет
    wc.lpszClassName   = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
           WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
           400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int) msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
// ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
HWND hweIn;
//HWND hweOut;
    switch (message)
    {
case WM_CREATE :
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM) s);
       hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
        DWORD WINAPI Thread2( void* pParams );//поток для обмена
{
    int tmp=a[i];
    a[i]=a[j];
    a[j]=tmp;
    Sleep(50);//для наглядности
}
 
DWORD WINAPI Thread1( void* pParams )//поток сортировки
{
    for (i=0;i<n-1;i++)
    for (j=i+1;j<n;j++)
    if (a[i]>a[j])
    {
        HANDLE hThread2=CreateThread(NULL,0,Thread2,NULL,0,NULL);//запускаем обмен в отдельном потоке
        WaitForSingleObject(hThread2,INFINITE);//и ждем окончания этого потока
        //если убрать, то сортировка будет неправильной
        CloseHandle(hThread2);
    }
}
 
int main()
{
    for (i=0; i<n; i++) {a[i]=rand()%10; printf("%d ", a[i]); }; printf("\n");
 
    hThread1=CreateThread(NULL,0,Thread1,NULL,0,NULL);//запускаем сортировку
    WaitForSingleObject(hThread1,INFINITE);//ждём окончания
 
    for (i=0; i<n; i++) printf("%d ", a[i]);
}
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
в каком месте ошибки ?
0
Заблокирован
14.03.2015, 18:32
Брось WinAPI на время, изучай пока сам язык. Через год-два освоишься, сможешь самостоятельно решать простейшие ошибки.
1
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
15.03.2015, 17:23  [ТС]
keepitsimple3, спасибо за совет, обязательно воспользуюсь, но бросить не могу, это задание и мне надо его сделать и очень желательно освоить этот язык програмирования

Добавлено через 13 минут
помогите пожалуйста

Добавлено через 3 часа 47 минут
сформировал код
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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain (HINSTANCE hInstance, 
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine, int nCmdShow)
                       // функция WinMain вызывается системой как начальная точка входа
                       // hInstance идентифицирует текущий образец прикладной программы.
                       // hPrevInstance идентифицирует предыдущий образец прикладной программы.
                       // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
                       // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style           = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc     = WndProc; //указатель на функцию окна
    wc.cbClsExtra      = 0;  //нет дополнительных данных класса
    wc.cbWndExtra      = 0;  // нет дополнительных данных окна
    wc.hInstance       = hInstance; //идентификатор текущего приложения
    wc.hIcon           = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground   = (HBRUSH)(COLOR_WINDOW +1); //цвет фона окна
    wc.lpszMenuName    = NULL; //меню нет
    wc.lpszClassName   = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
           WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
           400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int) msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
// ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
HWND hweIn;
//HWND hweOut;
    switch (message)
    {
case WM_CREATE :
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM) s);
       hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        DWORD WINAPI ThreadFunc(LPVOID lpParam)
        {
            char szMsg[80];
            wsprintf(szMsg, "Parameter =%d", *(DWORD*)lpParam);
            MessageBox(NULL, szMsg, " ThreadFunc", MB_OK);
            return 0;
        }
 
        VOID main(VOID)
        {
            DWORD dwThredId, dwThrdParam = 1;
            HANDLE hThread;
            char szMsg[80];
            hTread = CreateThread(
                NULL,
                0,
                TreadFunc,
                &dwThrdParam,
                0,
                &dwThread);
 
            if (hThred == NULL)
            {
                wsprintf(szMsg, "CreateThread failed.");
                MessageBox(NULL, szMsg, "main", MB_OK);
            }
            else
            {
                _getch();
                CloseHandle(hThread);
            }
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
как исправить ошибки ?
Ошибка 1 error C2601: ThreadFunc: недопустимые локальные определения функций c:\users\admin_2\desktop\5\lb.cpp 79 1 5
Ошибка 3 error C2664: "int wsprintfW(LPWSTR,LPCWSTR,...)": невозможно преобразовать аргумент 1 из "char [80]" в "LPWSTR" c:\users\admin_2\desktop\5 81 1 5
Добавлено через 9 часов 28 минут
помогите пожалуйста, никак не получается

Добавлено через 4 часа 55 минут
...

Добавлено через 11 минут
12 IntelliSense: аргумент типа "char *" несовместим с параметром типа "LPWSTR" lb.cpp 81 13 lr
как это можно исправить ?

Добавлено через 3 часа 42 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template< class T >
void selectSort(T* arr, int size) 
{
    T tmp;
    for(int i = 0; i < size; ++i) // i - номер текущего шага
    { 
        int pos = i; 
        tmp = arr[i];
        for(int j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
           {
               pos = j; 
               tmp = arr[j]; 
           }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
пытаюсь реализовать, но ошибки опять не дают покоя..
Ошибка 1 error C2951: Объявления шаблон разрешены только в глобальной области, области пространства имен и области класса 1
Ошибка 2 error C1506: неустранимая ошибка, связанная с областью действия блока 73 1
помогите пожалуйстаааа

Добавлено через 28 минут
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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    // функция WinMain вызывается системой как начальная точка входа
    // hInstance идентифицирует текущий образец прикладной программы.
    // hPrevInstance идентифицирует предыдущий образец прикладной программы.
    // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
    // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc = WndProc; //указатель на функцию окна
    wc.cbClsExtra = 0;  //нет дополнительных данных класса
    wc.cbWndExtra = 0;  // нет дополнительных данных окна
    wc.hInstance = hInstance; //идентификатор текущего приложения
    wc.hIcon = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //цвет фона окна
    wc.lpszMenuName = NULL; //меню нет
    wc.lpszClassName = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
        WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
        400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
    // ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
    HWND hweIn;
    //HWND hweOut;
    switch (message)
    {
    case WM_CREATE:
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM)s);
        hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
template< class T >
void selectSort(T* arr, int size)
{
    T tmp;
    for (int i = 0; i < size; ++i) // i - номер текущего шага
    {
        int pos = i;
        tmp = arr[i];
        for (int j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp)
            {
                pos = j;
                tmp = arr[j];
            }
        }
        arr[pos] = arr[i];
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
вот ошибок нету но, сортировки массива не происходит
0
Заблокирован
15.03.2015, 17:44
Из строки "1 5 7 9 2 0 3 8 4 6" нужно сделать массив целых чисел.
Задать условие вызова функции selectSort, которая отсортирует твой массив.
Из отсортированного массива нужно сделать строку и вывести ее обратно в то же текстовое поле.
1
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 14:19  [ТС]
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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    // функция WinMain вызывается системой как начальная точка входа
    // hInstance идентифицирует текущий образец прикладной программы.
    // hPrevInstance идентифицирует предыдущий образец прикладной программы.
    // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
    // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc = WndProc; //указатель на функцию окна
    wc.cbClsExtra = 0;  //нет дополнительных данных класса
    wc.cbWndExtra = 0;  // нет дополнительных данных окна
    wc.hInstance = hInstance; //идентификатор текущего приложения
    wc.hIcon = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //цвет фона окна
    wc.lpszMenuName = NULL; //меню нет
    wc.lpszClassName = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
        WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
        400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
    // ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
    HWND hweIn;
    //HWND hweOut;
    switch (message)
    {
    case WM_CREATE:
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM)s);
        hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>
#include<cstring>
#include<Windows.h>
#include<vector>
#include<list>
#include<algorithm>
 
 
int main()
{
    int N;
    std::cin >> N;
    int * mas = new int[N];
    for (int i = 0; i < N; i++)
        std::cin >> mas[i];
 
    int suma = 0;
    for (int i = 0; i < N; i++)
        suma += mas[i];
 
    std::cout << "suma = " << suma;
 
    return 0;
}
а как задать условие вызова функции sekectSort ?

Добавлено через 15 минут
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
#include <Windows.h> //  включения файлов в код сценария PHP во время исполнения.
char s[100];
char s2[100];
 
WNDCLASS        wc; //данные класса окна
MSG             msg; //сообщение
HWND            hWnd; //дескриптор главного окна
HINSTANCE       hInst; //дескриптор экземпляра приложения
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //это функция будет получать сообщения, которые Windows будет отсылать окну
 
 
int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    // функция WinMain вызывается системой как начальная точка входа
    // hInstance идентифицирует текущий образец прикладной программы.
    // hPrevInstance идентифицирует предыдущий образец прикладной программы.
    // lpCmdLine указывает на строку с нулевым символом в конце, определяющую командную строку для прикладной программы. 
    // nCmdShow определяет, как окно должно быть показано
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    hInst = hInstance; //идентификатор текущего приложения
 
    wc.style = CS_HREDRAW | CS_VREDRAW; //стиль
    wc.lpfnWndProc = WndProc; //указатель на функцию окна
    wc.cbClsExtra = 0;  //нет дополнительных данных класса
    wc.cbWndExtra = 0;  // нет дополнительных данных окна
    wc.hInstance = hInstance; //идентификатор текущего приложения
    wc.hIcon = LoadIcon(hInstance, NULL); //иконка
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //цвет фона окна
    wc.lpszMenuName = NULL; //меню нет
    wc.lpszClassName = TEXT("lbWinApi"); //имя программы
 
    RegisterClass(&wc); //регистрация класса окна
 
    hWnd = CreateWindow(TEXT("lbWinApi"), TEXT("Каркас приложения"), // (hWnd = CreateWindow("lbWinApi") - Имя класса окна   _T ("Каркас приложения")- Заголовок окна
        WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, // WS_CAPTION | WS_SYSMENU - стиль окна CW_USEDEFAULT, CW_USEDEFAULT - размеры окна 
        400, 250, NULL, NULL, hInstance, NULL);
    // Создаем главное окно приложения
    if (!hWnd) return FALSE;
 
    ShowWindow(hWnd, SW_SHOW); // показать окно
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) // Цикл обработки сообщений
    {
        TranslateMessage(&msg); //функция нажатия кодов нажатой клавиши
        DispatchMessage(&msg);  //посылает сообщение функции WndProc()
    }
    return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //функции окна
{
    // ini wmId, wmevent;
    //PAINTSTRUCT ps;  //создаём экземпляр структуры графического вывода
    //HDC hdc;         //создаём контекст устройства
    //RECT rect;
    TCHAR text[] = TEXT("Каркас приложения на WinApi"); //вывод текста в окне программы
    HWND hweIn;
    //HWND hweOut;
    switch (message)
    {
    case WM_CREATE:
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM)s);
        hweIn = CreateWindow(TEXT("BUTTON"), TEXT("2 5 7 8 5 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("3 5 7 7 4 9 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
        //SendMessage(hweOut, WM_SETTEXT, -1, (LPARAM) s2);
        break;
    case WM_DESTROY:
        PostQuitMessage(0); //напpавляет сообщение wm_Quit в ответ на сообщение WM_DESTROY
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam); //обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей.
    }
    return 0;
}
#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>
#include<cstring>
#include<Windows.h>
#include<vector>
#include<list>
#include<algorithm>
 
 
int main()
{
    int N;
    std::cin >> N;
    int * mas = new int[N];
    for (int i = 0; i < N; i++)
        std::cin >> mas[i];
 
    int suma = 0;
    for (int i = 0; i < N; i++)
        suma += mas[i];
 
    std::cout << "suma = " << suma;
 
    return 0;
}
void SelectSort(int array[], int shift, int size);
так а как из отсортированного массива нужно сделать строку и вывести ее обратно ?

Добавлено через 15 часов 41 минуту
как же это исправить....

Добавлено через 7 часов 59 минут
помогите пожалуйста

Добавлено через 2 часа 51 минуту
пытаюсь отладить ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
case WM_CREATE:
        hweIn = CreateWindow(TEXT("EDIT"), TEXT("1 5 7 9 2 0 3 8 4 6"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 10, 250, 20, hWnd, NULL, hInst, NULL);
        SendMessage(hweIn, WM_GETTEXT, 100, (LPARAM)s);
        hweIn = CreateWindow(TEXT("BUTTON"), TEXT("Сортировать"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 50, 250, 20, hWnd, NULL, hInst, NULL);
        for(i=0;i<n-1;i++){
      for(j=0;j<m-1;j++){
          if(j==0){
              min=i;
              for(k=i+1;k<m;k++){
                  if(a[k][j]<a[min][j]) min=k;
                  }
                  if(i!=min){
                      t=a[i][j];
                      a[i][j]=a[min][j];
                      a[min][j]=t;}}}}
        hweIn = CreateWindow(TEXT("STATIC"), TEXT("0 1 2 3 4 5 6 7 8 9"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_NUMBER,
            10, 90, 250, 20, hWnd, NULL, hInst, NULL);
Добавлено через 17 часов 34 минуты
помогите...
0
Заблокирован
17.03.2015, 19:19
Лучший ответ Сообщение было отмечено vjacheslav9 как решение

Решение

C++
/**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
ОТ ТЕБЯ ТОЛЬКО ТРЕБУЕТСЯ НАПИСАТЬ КОД
СОРТИРОВКИ СТРОКИ buff, ВСЕ ОСТАЛЬНОЕ 
Я УЖЕ СДЕЛАЛА ЗА ТЕБЯ
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
**/
 
 
#include <windows.h>
 
HWND            hwnd, edit1, edit2, button1, button2, label1, label2;
const unsigned  len = 1024;
wchar_t         buff[len];
 
 
 
void ФункцияКотораяСортируетСтроку(wchar_t * b, unsigned l)
{
    /// !!!!!!!!!!!! КОД СОРТИРОВКИ ПИСАТЬ ЗДЕСЬ !!!!!!!!!!!!!!!
}
 
 
 
LRESULT CALLBACK MsgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HDC hdcStatic;
 
    switch (message) 
    {
        case WM_QUIT:           PostQuitMessage(0); break;
        case WM_CLOSE:          PostQuitMessage(0); break;
        case WM_DESTROY:        PostQuitMessage(0); break;
        case WM_CTLCOLORSTATIC:
            hdcStatic = (HDC) wParam;
            SetTextColor(hdcStatic, RGB(0,255,0));
            SetBkMode (hdcStatic, TRANSPARENT);
            return (LRESULT)GetStockObject(NULL_BRUSH);
 
        case WM_COMMAND:
            if (LOWORD(wParam)==1001) 
            {
                GetWindowText(edit1, buff, len);
                ФункцияКотораяСортируетСтроку(buff, len);
                SetWindowText(edit2, buff);
            }
            else if (LOWORD(wParam)==1002)
            {
                PostQuitMessage(0);
            }
            break;
    }
    return DefWindowProc (hWnd, message, wParam, lParam);
}
 
 
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{
    MSG     msg;
    bool    bquit = false;
 
    WNDCLASSEX wincl;
    wincl.hInstance     = hInst;
    wincl.lpszClassName = TEXT("app");
    wincl.lpfnWndProc   = MsgProc;
    wincl.style         = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
    wincl.cbSize        = sizeof(WNDCLASSEX);
    wincl.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm       = NULL;
    wincl.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName  = NULL;
    wincl.cbClsExtra    = 0;
    wincl.cbWndExtra    = 0;
    wincl.hbrBackground = (HBRUSH)(8);
    RegisterClassEx(&wincl);
 
    hwnd = CreateWindowEx(WS_EX_APPWINDOW, TEXT("app"), TEXT(" "), WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 400, 170, HWND_DESKTOP, NULL, hInst, NULL);
    ShowWindow(hwnd, nCmdShow);
 
    label1  = CreateWindowEx(0, TEXT("Static"), TEXT("Ввод:"),       WS_CHILD|WS_VISIBLE,            10,  10,  60, 24, hwnd, NULL, NULL, NULL);
    label2  = CreateWindowEx(0, TEXT("Static"), TEXT("Вывод:"),      WS_CHILD|WS_VISIBLE,            10,  50,  60, 24, hwnd, NULL, NULL, NULL);
    edit1   = CreateWindowEx(0, TEXT("Edit"),   TEXT(" "),           WS_CHILD|WS_VISIBLE|WS_BORDER,  80,  10, 300, 24, hwnd, NULL, NULL, NULL);
    edit2   = CreateWindowEx(0, TEXT("Edit"),   TEXT(" "),           WS_CHILD|WS_VISIBLE|WS_BORDER,  80,  50, 300, 24, hwnd, NULL, NULL, NULL);
    button1 = CreateWindowEx(0, TEXT("button"), TEXT("Сортировать"), WS_CHILD|WS_VISIBLE|WS_BORDER,  10, 100, 120, 30, hwnd, (HMENU)1001, hInst, NULL);
    button2 = CreateWindowEx(0, TEXT("button"), TEXT("Закрыть    "), WS_CHILD|WS_VISIBLE|WS_BORDER, 261, 100, 120, 30, hwnd, (HMENU)1002, hInst, NULL);
 
 
 
    while ( !bquit ) 
    {
        if ( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) ) 
        {
            if ( msg.message == WM_QUIT )
                bquit = true;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else 
        {
            Sleep(10);
        }
    }
    return msg.wParam;
}
 
 
 
 
/// КОНЕЦ ФАЙЛА
Добавлено через 1 минуту
Если тебе все таки нужен пототк, то замени
C++
void ФункцияКотораяСортируетСтроку(wchar_t * b, unsigned l)
{
    /// !!!!!!!!!!!! КОД СОРТИРОВКИ ПИСАТЬ ЗДЕСЬ !!!!!!!!!!!!!!!
}
на функцию
C++
DWORD WINAPI ФункцияКотораяСортируетСтроку(LPVOID lpParam) 
{
    wchar_t * s = (wchar_t *)lpParam; // s - переданная строка buff
    MessageBox(0, s, TEXT("s"), MB_OK);
    // ЗДЕСЬ СОРТИРУЕШЬ ЭТУ СТРОКУ
    ExitThread(0);
}

И измени в этой части кода чтобы было так:
C++
        case WM_COMMAND:
            if (LOWORD(wParam)==1001) 
            {
                GetWindowText(edit1, buff, len);
                HANDLE hthread = CreateThread(NULL, 0, ФункцияКотораяСортируетСтроку, buff, 0, NULL);
                SetWindowText(edit2, buff);
            }
1
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 19:29  [ТС]
keepitsimple3, огромное спасибо!!!
жаль что и с этим проблемы...
/**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@

ОТ ТЕБЯ ТОЛЬКО ТРЕБУЕТСЯ НАПИСАТЬ КОД
СОРТИРОВКИ СТРОКИ buff, ВСЕ ОСТАЛЬНОЕ
Я УЖЕ СДЕЛАЛА ЗА ТЕБЯ

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@
**/
0
Заблокирован
17.03.2015, 19:36
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
жаль что и с этим проблемы...
У тебя одна проблема - Лень-матушка вперед тебя родилась (с) Русская пословица
0
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 19:54  [ТС]
keepitsimple3, если бы..., уже столько делаю... какая лень....

Добавлено через 16 минут
мда... программирование это не моё
C++
1
2
3
4
5
6
DWORD WINAPI ФункцияКотораяСортируетСтроку(LPVOID lpParam)
{
    wchar_t * std::sort(s, a + 2); = (wchar_t *)lpParam; // s - переданная строка buff
    // ЗДЕСЬ СОРТИРУЕШЬ ЭТУ СТРОКУ
    ExitThread(0);
}
0
Заблокирован
17.03.2015, 19:59
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
мда... программирование это не моё
Зачем тогда мучить себя? Брось и все.
0
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 20:01  [ТС]
keepitsimple3, есть дело, надо сделать, уже на 90 странице книжки по с++, но "смотришь в книгу видишь фигу"....
0
Заблокирован
17.03.2015, 20:12
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
уже на 90 странице книжки по с++, но "смотришь в книгу видишь фигу"
Надо перечитывать главу несколько раз до полного понимания, и только после этого переходить к чтению следующей главы.

Какую книгу ты сейчас читаешь? И что тебе непонятно в ней?
0
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 20:28  [ТС]
keepitsimple3, читаю "Прата С. - Язык программирования С++. Лекции и упражнения - 2011", не понятно пока функция printf()...

помоги пожалуйста сделать функцию...
0
651 / 404 / 76
Регистрация: 21.09.2008
Сообщений: 1,396
17.03.2015, 20:32
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
не понятно пока функция printf()...
Для С++ вполне каноничен cout.
В чём загвоздка-то?
0
Заблокирован
17.03.2015, 20:33
vjacheslav9, что сложного в функции printf ? Она ведь очень простая.
0
15 / 5 / 0
Регистрация: 06.02.2015
Сообщений: 283
17.03.2015, 20:36  [ТС]
sharpey, какие коды требуются что бы вывести на экран целую строку написано "специальные" а вот какие....

ну помоги сделать функцию сортировки пожалуйстаааа
0
Заблокирован
17.03.2015, 20:40
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
ну помоги сделать функцию сортировки пожалуйстаааа
тебе уже 2-ю тему помогают, но ты даже пальцем не пошевелил. Привык жить на всем готовеньком?

Часть 1
Часть 2
продолжение следует...
0
651 / 404 / 76
Регистрация: 21.09.2008
Сообщений: 1,396
17.03.2015, 21:18
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
какие коды требуются что бы вывести на экран целую строку написано "специальные" а вот какие....
Ничего не понятно.
Цитата Сообщение от vjacheslav9 Посмотреть сообщение
ну помоги сделать функцию сортировки пожалуйстаааа
Ня, холявщег
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2015, 21:18
Помогаю со студенческими работами здесь

Каким образом можно перевести код Паскаля в код Фортран?
Здравствуйте уважаемые программисты! Может быть банальная, но довольно сложная проблема - перевод из одного кода в другой! Как его можно...

Каким образом можно узнать букву диска, на который установлена ОС?
Ребят, подскажите пожалуйста, каким образом можно узнать букву диска, на который установлена ОС?

Создать поток сжатия GZipStream, и перенести данные из открытого файла в поток GZipStream
Здравствуйте. Объясните мне пожалуйста следующую вещь: Необходимо открыть файл для чтения. Создать поток сжатия GZipStream, и перенести...

Каким образом компилировать код не си-подобных языков?
Каким образом компилировать код не си подобных языков? Просто си я знаю можно скомпилировать в консоли например из текстового файла

[COBOL] Каким образом можно получить код символа?
Kukstyler, здравствуйте, каким образом в cobol можно получить код символа? Например, строка содержит &quot;a&quot;, и необходимо узнать код...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru