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

Использование механизма обмена сообщениями для управления окнами в ОС Windows - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сколько слагаемых должно быть в сумме 1+1/2+1/3+.+1/N, чтобы сумма оказалась больше L. L вводится пользователем , L принадлежит промежутку [1;2] http://www.cyberforum.ru/cpp-beginners/thread1041204.html
Cколько слагаемых должно быть в сумме 1+1/2+1/3+...+1/N, чтобы сумма оказалась больше L. L вводится пользователем, L принадлежит промежутку .
C++ String subscript out of range при создании динамического массива Всем привет. Пишу игру на c++. Смысл состоит в том чтобы отстреливать группы врагов, которые появляются сразу после уничтожения предыдущей и в большем количестве. Застрял я на реализации появления... http://www.cyberforum.ru/cpp-beginners/thread1041201.html
Метод золотого сечения.исправьте ошибку пожалуйста C++
Задача "Провести оптимизацию полученных полиномов на всем заданном интервале по методу золотого сечения" вот что я закодил: #include <stdio.h> #include <conio.h> #include <math.h> #include...
C++ Подсчет частоты алфавита
Доброго времени суток. Как посчитать в тексте из файла частоту алфавита(сколько раз каждый символ встречается в приведенном тексте)? Я понимаю, что мы открываем 2 файла: в 1 изначальный текст, в...
C++ Выбор одного варианта из двух http://www.cyberforum.ru/cpp-beginners/thread1041154.html
Добрый вечер! Помогите, пожалуйста, не совсем понял, как с оператором if сделать выбор на вывод подходящего условия. Имеется условие: if (a >b) c=m; else if(a <b) c=b; Как сделать так, что...
C++ Работа с изображением в консольном приложении Срочно братья программисты, прошу о помощи! Волнуют три вопроса, а еще больше на них ответы (подробные). 1. Функция MakePalette. Принцип работы, результат и т.д. 2. Хранение данных изображения в... подробнее

Показать сообщение отдельно
SlimSky
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 11

Использование механизма обмена сообщениями для управления окнами в ОС Windows - C++

14.12.2013, 17:13. Просмотров 190. Ответов 0
Метки (Все метки)

Ошибка в строке wincl.lpszClassName = szClassName; собственно почему ругается???


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
 
/* кол-во строчек */
#define LINES 30
 
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
 
char szClassName[] = "WindowsApp";
 
int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = &szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_HREDRAW | CS_VREDRAW ;
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    if (!RegisterClassEx(&wincl)) return(0);
 
    hwnd = CreateWindowEx(0,szClassName,"Поставь мне + пжлста",WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,400,300,NULL,NULL,hThisInstance,NULL);
 
    ShowWindow(hwnd, nFunsterStil);
 
    /* Цикл обработки мессаджей */
    while (GetMessage(&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return(messages.wParam);
}
 
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static int  cxChar, cxCaps, cyChar, cyClient, cxClient, VscrollPos, HscrollPos;
    int i;
    int j;
 
    PAINTSTRUCT ps;
    char buffer[1024]; //размер буфера для текста ставь побольше если будет много текста
    TEXTMETRIC tm;
 
 
    if (message ==WM_VSCROLL)
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, false, SB_VERT);
    }
    else if (message ==WM_HSCROLL)
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, true, SB_VERT);
    }
    else
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, false, SB_HORZ);
    }
 
    switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        case WM_CREATE:
            {
            HDC hdc = GetDC(hwnd);
 
            GetTextMetrics(hdc, &tm);
            cxChar = tm.tmAveCharWidth;
            cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;
            cyChar = tm.tmHeight + tm.tmExternalLeading;
 
            ReleaseDC(hwnd, hdc);
 
            SetScrollRange(hwnd, SB_VERT, 0, LINES - 1, FALSE);
            SetScrollPos(hwnd, SB_VERT, VscrollPos, TRUE);
 
            //SetScrollRange(hwnd, SB_HORZ, 0, LINES - 1, FALSE);
            SetScrollPos(hwnd, SB_HORZ, HscrollPos, TRUE);
            }
        case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);
 
            i = GetScrollPos(hwnd, SB_VERT);
            j = GetScrollPos(hwnd, SB_HORZ);
            sprintf(buffer,"Здравствуйте! Уже несколько дней мучаюсь с такой проблемой: ");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 1;
            sprintf(buffer,"Нужно создать окно с горизонтальной и вертикальной");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 2;
            sprintf(buffer,"прокруткой. Горизонтальная прокрутка должна блокироваться ");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 3;
            sprintf(buffer,"при нажатии на вертикальную, и наоборот. Я не знаю как");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 4;
            sprintf(buffer,"передать текст в окно.");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
 
            EndPaint(hwnd, &ps);
            break;
        }
 
 
        case WM_VSCROLL:
        {
 
            switch (LOWORD(wParam))
            {
                case SB_LINEUP:
                    VscrollPos -= 1;
                    break;
                case SB_LINEDOWN:
                    VscrollPos += 1;
                    break;
                case SB_PAGEUP:
                    VscrollPos -= cyClient / cyChar;
                    break;
                case SB_PAGEDOWN:
                    VscrollPos += cyClient / cyChar;
                    break;
                case SB_THUMBPOSITION:
                    VscrollPos = HIWORD(wParam);
                    break;
                default:
 
                    break;
            }
 
            VscrollPos = max(0, min(VscrollPos, LINES - 1));
 
            if (VscrollPos != GetScrollPos(hwnd, SB_VERT)) {
                SetScrollPos(hwnd, SB_VERT, VscrollPos, TRUE);
                InvalidateRect(hwnd, NULL, TRUE);
            }
 
        case WM_HSCROLL:
        {
            switch (LOWORD(wParam))
            {
                case SB_LINEUP:
                    HscrollPos -= 1;
                    break;
                case SB_LINEDOWN:
                    HscrollPos += 1;
                    break;
                case SB_PAGEUP:
                    HscrollPos -= cxClient / cxChar;
                    break;
                case SB_PAGEDOWN:
                    HscrollPos += cxClient / cxChar;
                    break;
                case SB_THUMBPOSITION:
                    HscrollPos = HIWORD(wParam);
                    break;
                default:
                    
                    break;
            }
        }
 
            if (HscrollPos != GetScrollPos(hwnd, SB_HORZ)) {
                SetScrollPos(hwnd, SB_HORZ, HscrollPos, TRUE);
                InvalidateRect(hwnd, NULL, TRUE);
            }
            break;
            }
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.