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

Ошибки в создание класса - C++

Восстановить пароль Регистрация
 
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
08.07.2013, 14:49     Ошибки в создание класса #1
Всем добрый день!
При создании своего класса я столкнулся с проблемой, что компилятор жалуется, на содержимое класса в целом!
Вот код:
CreateWindowClass.cpp
Кликните здесь для просмотра всего текста
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
class CreateWindowClass
{
private:
    WNDCLASS    wndclass={0};
    UINT        style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS; //Стиль окна
    int         cbClsExtra=0, cbWndExtra=0;             //Доп память
    HICON       hIcon=LoadIcon(NULL, IDI_APPLICATION);  //Иконка
    HCURSOR     hCursor=LoadCursor(NULL, IDC_ARROW);    //Мышка
    LPCSTR      lpszMenuName=NULL;
    HBRUSH      hbrBackground=(HBRUSH)COLOR_APPWORKSPACE;//Цвет фона(серый)
    //-----------------------------------------------------------------------
    LPCTSTR     szAppNam    =TEXT("TEXT1");         //Указатель на имя класса окна
    LPCTSTR     lpWindowName=TEXT("Dialog Window"); //Указатель на имя окна
    DWORD       dwStyle=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;//Стиль окна
    int         x=0,y=0;                            //Начальное положение экрана
    int         xWidth=100, yHeight=100;            //Ширина и высота экрана
    HWND        hWndParent=null;                    //Родитель
    HMENU       hMenu=NULL;                         //Меню
    HINSTANCE   hInstance;                          //Дескриптор экземпляра приложения
    LPVOID      lpParam=NULL;                       //Указатель на данные созданного окна
    //-----------------------------------------------------------------------
    HWND        hwnd;
    int iCmdShow;
    //-----------------------------------------------------------------------
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)
    //-----------------------------------------------------------------------
    bool RegMyWindowClass()
    {
        wndclass.lpfnWndProc    =(WNDPROC)WndProc;
        wndclass.style          =style
        wndclass.cbClsExtra     =cbClsExtra;
        wndclass.cbWndExtra     =cbWndExtra;
        wndclass.hInstance      =hInstance;
        wndclass.hIcon          =hIcon;
        wndclass.hCursor        =hCursor;
        wndclass.lpszMenuName   =lpszMenuName;
        wndclass.lpszClassName  =szAppName;
        wndclass.hbrBackground  =hbrBackground;
 
        return RegisterClass(&wndclass);
    }
    bool CrWindow()
    {
        hwnd=CreateWindow(szAppName, lpWindowName, dwStyle, x, y, xWidth, yHeight, hWndParent, hMenu, hInstance, lpParam);
        ShowWindow(hwnd, iCmdShow);
        UpdateWindow(hwnd);
        return hwnd
    }
    LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
        HDC             hdc;
        PAINTSTRUCT     ps;
        RECT            rect;
 
        switch(iMsg)
        {
        case WM_CREATE:
            PlaySound(L"ding.wav", NULL, SND_FILENAME|SND_ASYNC);
        break;
        case WM_PAINT:
            hdc=BeginPaint(hwnd, &ps);
 
            GetClientRect(hwnd, &rect);
 
            DrawText(hdc, L"Всем привет! Я windows XP!", -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 
            EndPaint(hwnd, &ps);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        break;
        }
        return 0
    }
//public:
    
}


main.cpp
Кликните здесь для просмотра всего текста
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
//Обзор возможностей WinAPI
#pragma comment(lib,"Winmm.lib") //Библиотека произведения звуков
#include <windows.h>
#include "CreateWindowClass.cpp"
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
bool RegMyWindowClass(HINSTANCE, LPCTSTR);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    CreateWindowClass CrWind;
    MSG         msg;
    
    //-----------
    CrWind.hInstance=hInstance;
    CrWind.iCmdShow=iCmdShow;
    CrWind.szAppNam=TEXT("HelloWin32");
    CrWind.lpWindowName=TEXT("Main Window");
    CrWind.xWidth=480;
    CrWind.yHeight=640;
    //-----------
 
    if(!CrWind.RegMyWindowClass()) return 1;
    if(!CrWind.CrWindow()) return 2;
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}


Знаю, что это должно быть в теме WinAPI, но ошибки явно новичковые
компилятор
(4) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "wndclass"
(4) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(4) : error C2059: синтаксическая ошибка: {
(4) : error C2334: непредвиденные лексемы перед '{'; пропуск вероятного тела функции
(5) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "style"
(5) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(5) : error C2065: CS_HREDRAW: необъявленный идентификатор
(5) : error C2065: CS_VREDRAW: необъявленный идентификатор
(5) : error C2065: CS_DBLCLKS: необъявленный идентификатор
(5) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(5) : error C2864: CreateWindowClass::style: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(6) : error C2864: CreateWindowClass::cbClsExtra: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(6) : error C2864: CreateWindowClass::cbWndExtra: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(7) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hIcon"
(7) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(7) : error C2065: NULL: необъявленный идентификатор
(7) : error C2065: IDI_APPLICATION: необъявленный идентификатор
(7) : error C3861: LoadIcon: идентификатор не найден
(7) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(7) : error C2864: CreateWindowClass::hIcon: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(8) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hCursor"
(8) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(8) : error C2065: NULL: необъявленный идентификатор
(8) : error C2065: IDC_ARROW: необъявленный идентификатор
(8) : error C3861: LoadCursor: идентификатор не найден
(8) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(8) : error C2864: CreateWindowClass::hCursor: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(9) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "lpszMenuName"
(9) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(9) : error C2065: NULL: необъявленный идентификатор
(9) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(9) : error C2864: CreateWindowClass::lpszMenuName: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(10) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hbrBackground"
(10) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(10) : error C2065: HBRUSH: необъявленный идентификатор
(10) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(10) : error C2864: CreateWindowClass::hbrBackground: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(10) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "COLOR_APPWORKSPACE"
(10) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(12) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "szAppNam"
(12) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(12) : error C3861: TEXT: идентификатор не найден
(12) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(12) : error C2864: CreateWindowClass::szAppNam: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(13) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "lpWindowName"
(13) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(13) : error C3861: TEXT: идентификатор не найден
(13) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(13) : error C2864: CreateWindowClass::lpWindowName: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(14) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "dwStyle"
(14) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(14) : error C2065: CS_HREDRAW: необъявленный идентификатор
(14) : error C2065: CS_VREDRAW: необъявленный идентификатор
(14) : error C2065: CS_DBLCLKS: необъявленный идентификатор
(14) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(14) : error C2864: CreateWindowClass::dwStyle: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(15) : error C2864: CreateWindowClass::x: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(15) : error C2864: CreateWindowClass::y: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(16) : error C2864: CreateWindowClass::xWidth: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(16) : error C2864: CreateWindowClass::yHeight: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(17) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hWndParent"
(17) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(17) : error C2065: null: необъявленный идентификатор
(17) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(17) : error C2864: CreateWindowClass::hWndParent: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(18) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hMenu"
(18) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(18) : error C2065: NULL: необъявленный идентификатор
(18) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(18) : error C2864: CreateWindowClass::hMenu: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(19) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hInstance"
(19) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(19) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(20) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "lpParam"
(20) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(20) : error C2065: NULL: необъявленный идентификатор
(20) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(20) : error C2864: CreateWindowClass::lpParam: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
(22) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "hwnd"
(22) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(22) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(25) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "CALLBACK"
(25) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(25) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "WndProc"
(25) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(25) : error C2061: синтаксическая ошибка: идентификатор "HWND"
(27) : error C2144: синтаксическая ошибка: перед "bool" требуется ";"
(27) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(27) : warning C4183: WndProc: отсутствие возвращаемого типа; предполагается функция-член, возвращающая 'int'
(49) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "CALLBACK"
(49) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(49) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "WndProc"
(49) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(49) : error C2061: синтаксическая ошибка: идентификатор "HWND"
(50) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
(50) : error C2535: int CreateWindowClass::WndProc(void): функция-член уже определена или объявлена
(25): см. объявление 'CreateWindowClass::WndProc'
(77) : warning C4183: WndProc: отсутствие возвращаемого типа; предполагается функция-член, возвращающая 'int'
(81) : fatal error C1004: непредвиденное обнаружение конца файла


Прошу укажите на мои ошибки, и скажите почему не правильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 14:49     Ошибки в создание класса
Посмотрите здесь:

Построить описание класса (ошибки и вопрос) C++
Ошибки при наследовании класса от вектора C++
Создание экземпляр класса из другого класса C++
C++ Ошибки в реализации класса Vector3D
C++ Ошибки при наследовании класса
C++ Исправить ошибки компилирования класса
C++ Создание экземпляра класса до определения класса
C++ Подключение класса, ошибки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 428
08.07.2013, 15:51     Ошибки в создание класса #2
Эм тут даже не знаю с чего начать))). Ну первый мой вам совет, вы хотя бы немножко приоткройте книгу по с++. Поля данные (если они только не статические константы) так не инициализируют, для этого есть конструкторы класса.

Добавлено через 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#pragma comment(lib,"Winmm.lib") //Библиотека произведения звуков
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam){
        HDC             hdc;
        PAINTSTRUCT     ps;
        RECT            rect;
 
        switch(iMsg){
        case WM_CREATE:
            PlaySound(L"ding.wav", NULL, SND_FILENAME|SND_ASYNC);
        break;
        case WM_PAINT:
            hdc=BeginPaint(hWnd, &ps);
 
            GetClientRect(hWnd, &rect);
 
            DrawText(hdc, L"Всем привет! Я windows XP!", -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 
            EndPaint(hWnd, &ps);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hWnd, iMsg, wParam, lParam);
        break;
        }
        return 0;
    }
 
class CreateWindowClass{
    WNDCLASS    wndclass;
    UINT        style;          //Стиль окна
    int         cbClsExtra; 
    int         cbWndExtra;     //Доп память
    HICON       hIcon;          //Иконка
    HCURSOR     hCursor;        //Мышка
    LPCSTR      lpszMenuName;
    HBRUSH      hbrBackground;  //Цвет фона(серый)
    //-----------------------------------------------------------------------
    LPCTSTR     szAppNam;       //Указатель на имя класса окна
    LPCTSTR     lpWindowName;   //Указатель на имя окна
    DWORD       dwStyle;        //Стиль окна
    int         x;
    int         y;              //Начальное положение экрана
    int         xWidth;
    int         yHeight;        //Ширина и высота экрана
    HWND        hWndParent;     //Родитель
    HMENU       hMenu;          //Меню
    HINSTANCE   hInstance;      //Дескриптор экземпляра приложения
    LPVOID      lpParam;        //Указатель на данные созданного окна
    HWND        hwnd;
    int iCmdShow;
 
public: 
 
    CreateWindowClass(HINSTANCE hInst, int iCmdSh){
        //wndclass = NULL;
        style = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS; 
        cbClsExtra = 0;
        cbWndExtra = 0;             
        hIcon = LoadIcon(NULL, IDI_APPLICATION); 
        hCursor = LoadCursor(NULL, IDC_ARROW);   
        lpszMenuName = NULL;
        hbrBackground =(HBRUSH)COLOR_APPWORKSPACE;
        //-----------------------------------------------------------------------
        szAppNam    = TEXT("TEXT1");         
        lpWindowName = TEXT("Dialog Window"); 
        dwStyle = WS_SYSMENU|WS_MINIMIZEBOX;
        x = 100; 
        y = 100;                            
        xWidth = 640; 
        yHeight = 480;            
        hWndParent = NULL;                    
        hMenu = NULL;                         
        lpParam = NULL;  
        hInstance = hInst;
        iCmdShow = iCmdSh;
 
    }
 
    bool RegMyWindowClass(){
        wndclass.lpfnWndProc    = WndProc;
        wndclass.style          = style;
        wndclass.cbClsExtra     = cbClsExtra;
        wndclass.cbWndExtra     = cbWndExtra;
        wndclass.hInstance      = hInstance;
        wndclass.hIcon          = hIcon;
        wndclass.hCursor        = hCursor;
        wndclass.lpszMenuName   = NULL;
        wndclass.lpszClassName  = szAppNam;
        wndclass.hbrBackground  = hbrBackground;
 
        return RegisterClass(&wndclass);
    }
 
    bool CrWindow(){
        hwnd=CreateWindow(szAppNam, lpWindowName, dwStyle, x, y, xWidth, yHeight, hWndParent, hMenu, hInstance, lpParam);
        ShowWindow(hwnd, iCmdShow);
        UpdateWindow(hwnd);
        return (hwnd != NULL);
    }
};
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    CreateWindowClass CrWind(hInstance, iCmdShow);
    MSG         msg;
   // CrWind.hInstance=hInstance;
   // CrWind.iCmdShow=iCmdShow;
 
    if(!CrWind.RegMyWindowClass()) return 1;
    if(!CrWind.CrWindow()) return 2;
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
08.07.2013, 18:11  [ТС]     Ошибки в создание класса #3
Спасибо! Теперь разобрался.(Там где я читал про классы (а также со слов препода), об этом небыло сказано...)
Yandex
Объявления
08.07.2013, 18:11     Ошибки в создание класса
Ответ Создать тему
Опции темы

Текущее время: 01:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru