Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Gepar
1182 / 538 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
1

_beginthread в VS 6.0

25.02.2012, 21:31. Просмотров 742. Ответов 6
Метки нет (Все метки)

При попытке скомпилировать получаю
C:\c++\VS PROJECTS\Temp\main.cpp(80) : error C2065: '_beginthread' : undeclared identifier

Хотя всё что нужно вроде подключил
C
1
2
3
#include <windows.h>
#include <process.h>
#include <stdlib.h>
Студия vs 6.0, компилирую через саму студию, проект создан как приложение для windows с интерфейсом.

Полный код приложения:
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
#include <windows.h>
#include <process.h>
#include <stdlib.h>
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
 
HWND hwnd;
int cxClient, cyClient;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE, PSTR szCmdLine, int iCmdShow)
{
    static char szAppName[]="RndRctMT";
    MSG msg;
 
    WNDCLASSEX wndclass;
 
    ZeroMemory(&wndclass, sizeof(wndclass));
 
    wndclass.cbSize=sizeof(wndclass);
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.lpfnWndProc=WndProc;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);
    wndclass.lpszClassName=szAppName;
    wndclass.hIconSm=LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wndclass);
 
    hwnd=CreateWindow(szAppName, "Random Rectangles", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
VOID Thread(PVOID pvoid)
{
    HBRUSH hBrush;
    HDC hdc;
    int xLeft, xRight, yTop, yBottom, iRed, iGreen, iBlue;
 
    while(TRUE)
    {
        if(cxClient!=0 || cyClient!=0)
        {
            xLeft=rand() % cxClient;
            xRight=rand() % cxClient;
            yTop=rand() %cyClient;
            yBottom=rand()% cyClient;
            iRed=rand()% 255;
            iGreen=rand()% 255;
            iBlue=rand()%  255;
 
            hdc=GetDC(hwnd);
            hBrush=CreateSolidBrush(RGB (iRed, iGreen, iBlue));
            SelectObject(hdc, hBrush);
 
            Rectangle(hdc, min (xLeft, xRight), min(yTop, yBottom),
                max(xLeft, xRight), max(yTop, yBottom));
            ReleaseDC(hwnd, hdc);
            DeleteObject(hBrush);
        }
    }
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    switch(iMsg)
    {
        case WM_CREATE:
            _beginthread(Thread, 0, NULL);
            return 0;
 
        case WM_SIZE:
            cxClient=LOWORD(lParam);
            cyClient=HIWORD(lParam);
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage(0);
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Добавлено через 1 минуту
minigw при этом компилирует нормально, нужно какие-то флаги компиляции в vs 6.0 включать или что?

Добавлено через 3 минуты
Петзолд вон пишет о каких-то там CFLAGSMT, но я ведь не через make файл компилирую приложение, как мне поступить ?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 21:31
Ответы с готовыми решениями:

beginthread
var Thread: array of longword; id: longword; ... Thread := beginthread(nil, 0,...

beginthread и параметр
unit Unit1; interface uses Forms, Dialogs, Windows, SysUtils, Classes, Controls,...

Создать поток, реализованный в модуле, через beginthread
Народ, помогите.Нужно вызвать поток через функцию...

Из запущенного с помощью функции BeginThread потока нужно вывести текст в RichEdit
Из запущенного с помощью функции BeginThread потока нужно вывести текст в RichEdit, как это сделать...


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

Или воспользуйтесь поиском по форуму:
6
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
25.02.2012, 21:48 2
Gepar, у меня на В VS2010 работает , но для этого кодировку символов сменил
с Юникод на Не задано.
0
Gepar
1182 / 538 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
25.02.2012, 22:05  [ТС] 3
MrCold, меня интересует именно vs 6.0.
0
NoMasters
25.02.2012, 22:05
  #4

Не по теме:

Цитата Сообщение от MrCold Посмотреть сообщение
Gepar, у меня на В VS2010 работает , но для этого кодировку символов сменил
с Юникод на Не задано.
Во истину работа с продуктами от микрософт сродни шаманству

2
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
25.02.2012, 22:22 5
убедись, что используешь многопоточную версию библиотеки (опция /MT или /MTd)
1
Gepar
1182 / 538 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
25.02.2012, 23:20  [ТС] 6
retmas, а как это сделать? Где искать список всех опций используемых компилятором в текущем проекте, как хоть примерно пункт должен называться?
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
25.02.2012, 23:36 7
Лучший ответ Сообщение было отмечено как решение

Решение

в свойствах проекта(создание кода или что-то в этом роде) выбирается библиотека времени выполнения (CRT library).
в 6-ой студии по умолчанию была single threaded

Добавлено через 56 секунд
могу показать для 10-ой студии. 6-ой у меня нет
3
Миниатюры
_beginthread в VS 6.0  
25.02.2012, 23:36
Ответ Создать тему
Опции темы

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