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

Проблемы с много-файловыми объявлениями - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатель на виртуальную функцию http://www.cyberforum.ru/cpp-beginners/thread936191.html
#include <stdio.h> #include <conio.h> class A { public: virtual void f(){printf("a\n");}; }; class B:public A
C++ ostream& output Что это за параметр такой, - ostream& output? ostream& operator<< (ostream& output, const Array<T>& theArray) { for (int i = 0; i<theArray.GetSize(); i++) output << " " << theArray << endl; return output; } http://www.cyberforum.ru/cpp-beginners/thread936186.html
C++ Зачем false?
void IntFillFunction(Array<int>& theArray) { bool Stop = false; int offset, value; while (!Stop) { cout << "Enter an offset (0-9) "; cout << "and a value. (-1 to stop): " ; cin >> offset >> value; if (offset < 0)
Указатель, как массив C++
Объясните, пожалуйста, каким образом в 10-ой строке указатель pType ведет себя как массив? template <class T> // declare the template and the parameter class Array // the class being parameterized { public: Array(int itsSize = DefaultSize); Array(const Array &rhs); ~Array() { delete pType; } Array& operator=(const Array&);
C++ ReadProcessMemory http://www.cyberforum.ru/cpp-beginners/thread936171.html
ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + Player_Base), &CLocalPlayer, sizeof(DWORD), 0); Объясните пожалуйста эту строку
C++ Моделирование физических процессов 1. Ищу книги на данную тему, все что есть. 2. Что вы думаете про связку C++ с Питоном? т.е. мейн код на плюсах, визуализация на Питоне. Как я понял на Питоне есть отличные библиотеки для таких нужд. Вариант онли Питон не рассматриваю. Делаю сейчас визуализацию на SFML, хоть библиотека и проста, но она заточена под игры. подробнее

Показать сообщение отдельно
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 151
10.08.2013, 16:53  [ТС]     Проблемы с много-файловыми объявлениями
Сделал, но новые ошибки не перестали появлятся... (Хоть до того как я разбил файл ошибок не было, все отлично работало)
Стал жаловаться на:
Неправильную защиту от повторного подключения...
Переиницилизацию классов, и несовпадение аргументов!

Кликните здесь для просмотра всего текста
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
// @file CreateWindows.h
//#if !CrtWindClasOP
#define CrtWindClasOP
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
class CreateWindowClass
{
public:
    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;
    //-----------------------------------------------------------------------
    CreateWindowClass(HINSTANCE, int, LPCTSTR, LPCTSTR, int, int);
    //CreateWindowClass(HINSTANCE hInst, int iCmdSh, LPCTSTR AppName=TEXT("TEXT1"), LPCTSTR WndName=TEXT("Dialog Window"), int xM=800, int yM=600);
    ATOM RegMyWindowClass();
    bool CrWindow();
};
 
extern CreateWindowClass* pntWndClass; //Указатель на класс
 
//#endif
 
 
 
 
 
 
// @file CreateWindows.cpp
//#include <windows.h>
#include "CreateWindowClass.h"
 
//LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
CreateWindowClass::CreateWindowClass(HINSTANCE hInst, int iCmdSh, LPCTSTR AppName=TEXT("TEXT1"), LPCTSTR WndName=TEXT("Dialog Window"), int xM=800, int yM=600){
        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)1;
        //-----------------------------------------------------------------------
        szAppNam    = AppName;         
        lpWindowName = WndName; 
        dwStyle = WS_SYSMENU|WS_MINIMIZEBOX; //CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS
        x = 100; 
        y = 100;                            
        xWidth = xM; 
        yHeight = yM;            
        hWndParent = NULL;                    
        hMenu = NULL;                         
        lpParam = NULL;  
        hInstance = hInst;
        iCmdShow = iCmdSh;
    }
ATOM CreateWindowClass::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 CreateWindowClass::CrWindow()
    {
        hwnd=CreateWindow(szAppNam, lpWindowName, dwStyle, x, y, xWidth, yHeight, hWndParent, hMenu, hInstance, lpParam);
        ShowWindow(hwnd, iCmdShow);
        UpdateWindow(hwnd);
        return (hwnd != NULL);
    }
 
CreateWindowClass* pntWndClass; //Указатель на класс


Кликните здесь для просмотра всего текста
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
// @file GameMain.h
//#if !GAMEMAIN
#define GAMEMAIN
//
#include <windows.h>
#include "CreateWindowClass.h"
extern CreateWindowClass* pntWndClass; //Указатель на класс
//
#define MAX_STAGE 12
#define MAX_SPEED_LIFT 5
//
enum {NONE, UP, DOWN, UPDOWN};
 
class House
{
private:
    HBRUSH  hBrush;
    HDC     hdc;
    RECT    rect;
public:
    House();
    void Draw();
};
 
class Lift
{
private:
    HBRUSH  hBrush;
    HDC     hdc;
    RECT    rect;
    int     x;
    int     y;
    int     Stage;
    int     Active;
    int     KydaStage;
public:
    Lift(int red=100, int green=100, int blue=100);
    void MimoStage();//Мимо этого этажа пролетаю
    void MoveLift();//Двигаем лифт
    void Draw();//Рисуем лифт
    void CallLift(int stg, int mode);//Лифт вызвала кнопка
};
 
class Buttons
{
private:
    HBRUSH  hBrush;
    HDC     hdc;
    RECT    rect;
    int     x;
    int     y;
    int     Active;
    int     MyStage;
    HBRUSH  AcBrush;
public:
    static int Stage;
    Buttons();
    void Draw();
    void CallBtn(int modeCall);
    void LiftOver();
};
 
extern House    cHouse;
extern Lift     cLt;
extern Buttons  btns[MAX_STAGE];
 
void DrawAllBtn();
void GameMain();
 
//#endif
 
 
 
 
// @file GameMain.cpp
//#include <windows.h>
//extern CreateWindowClass* pntWndClass; //Указатель на класс
#include"GameMain.h"
 
//Class HOUSE
House::House()
    {
        SetRect(&rect, 10, 10, 500, 540);
        hBrush = CreateSolidBrush(RGB(189, 255, 178));
    }
void House::Draw()
    {
        hdc = GetDC(pntWndClass->hwnd);
        //--
        ReleaseDC(pntWndClass->hwnd, hdc);
    }
//END House
 
//Class Lift
Lift::Lift(int red=100, int green=100, int blue=100): x(300), y(480), Stage(1), Active(NONE), KydaStage(1)
    {
        SetRect(&rect, x, y, x+30, y+40);
        hBrush = CreateSolidBrush(RGB(red, green, blue));
    }
void Lift::MimoStage()//Мимо этого этажа пролетаю
    {
        if(Stage==KydaStage)
        {
            btns[Stage-1].LiftOver();
        }
    }
void Lift::MoveLift()//Двигаем лифт
    {
    }
void Lift::Draw()//Рисуем лифт
    {
        hdc = GetDC(pntWndClass->hwnd);
        //--
        //FillRect(hdc, &rect, NULL);
        InvalidateRect(pntWndClass->hwnd, &rect, true);
        SetRect(&rect, x, y, x+30, y+40);
        FillRect(hdc, &rect, hBrush);
        //--
        ReleaseDC(pntWndClass->hwnd, hdc);
        MoveLift();
    }
void Lift::CallLift(int stg, int mode)//Лифт вызвала кнопка
    {
    }
//END Lift
 
//Class Buttons
Buttons::Buttons(): Active(NONE), MyStage(Stage)
    {
        x=450; y=520-(Stage*40)+5;
        SetRect(&rect, x, y, x+30, y+30);
        hBrush = CreateSolidBrush(RGB(30, 90, 50));
        AcBrush = CreateSolidBrush(RGB(78, 255, 34));
        Stage++;
    }
void Buttons::Draw()
    {
    }
void Buttons::CallBtn(int modeCall)
    {
        if(Active!=modeCall && Active!=UPDOWN)
        {
            switch(Active)
            {
            case NONE: 
                if((modeCall==DOWN && MyStage!=1)||(modeCall==UP && MyStage!=MAX_STAGE)) 
                    {Active=modeCall; cLt.CallLift(MyStage, Active);}
            break;
            case UP: case DOWN:   Active=UPDOWN;    cLt.CallLift(MyStage, Active);  break;
            }
        }
    }
void Buttons::LiftOver()
    {
    }
int Buttons::Stage=1;
//END Buttons
 
//--Globals-Class
House cHouse;
Lift cLt;
Buttons btns[MAX_STAGE];
//-----------------------
void DrawAllBtn()
{
    for(int i=0; i<btns->Stage; i++)
    {
        btns[i].Draw();
    }
}
 
void GameMain()
{
    DWORD start_time = GetTickCount();
    //-------------------
    cHouse.Draw();
    cLt.Draw();
    DrawAllBtn();
 
    
    //-------------------
    while((GetTickCount() - start_time) < 66);
}


Кликните здесь для просмотра всего текста
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
// @file Main.cpp
//Обзор возможностей WinAPI
#pragma comment(lib,"Winmm.lib") //Библиотека произведения звуков
#include <windows.h>
#include "CreateWindowClass.h"
#include "GameMain.h"
//--Определения
//
//#define OHW CrWind.hwnd
//
//----Globals-----
//extern CreateWindowClass* pntWndClass; //Указатель на класс
//
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam){
        HDC             hdc;
        PAINTSTRUCT     ps;
        RECT            rect;
        int             iNextString=0;
        int             x=0,y=0;
 
        switch(iMsg){
        case WM_CREATE:
            //PlaySound(L"ding.wav", NULL, SND_FILENAME|SND_SYNC);
        break;
        case WM_LBUTTONDOWN :
            x = LOWORD(lParam);
            y = HIWORD(lParam);
            if(x>=450 && x<=480 && y>=45 && y<=515)
            {
                for(int i=1; i<MAX_STAGE+1; i++)
                {
                    if(y>=520-(i*40)+5 && y<=520-(i*40)+35)
                    {
                        if(y<520-(i*40)+20)
                        {btns[i-1].CallBtn(UP);}
                        else {btns[i-1].CallBtn(DOWN);}
                        break;
                    }
                }
            }
        break;
        case WM_PAINT:
            cHouse.Draw();
            hdc=BeginPaint(hWnd, &ps);
 
            GetClientRect(hWnd, &rect);
 
            //TextOut(hdc, 600, y, "Hello", 5);
 
            EndPaint(hWnd, &ps);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hWnd, iMsg, wParam, lParam);
        break;
        }
        return 0;
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    CreateWindowClass CrWind(hInstance, iCmdShow, TEXT("HelloWin32"), TEXT("Main Window"));
    pntWndClass=&CrWind;
    MSG         msg;
    
    //-----------
    if(!CrWind.RegMyWindowClass()) return 1;
    if(!CrWind.CrWindow()) return 2;
    //----------------------------------------------------------
    /*while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }*/
    while(TRUE)
    {
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        {
            if (msg.message == WM_QUIT) break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            }
        // Вывод очередного кадра игры
        GameMain();
    }
    return msg.wParam;
}


Я просто в ауте иногда от компилятора Visual c++, я б давно от него отказался, но редактор кода уж больно удобен...
 
Текущее время: 06:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru