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

Как сделать такое окно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Для чего const после phone() http://www.cyberforum.ru/cpp-beginners/thread613878.html
const char* phone()const {return phone_;} Для чего const после phone()?
C++ Вложенный цикл for помогите пожалуйста решить задачу с помощью вложеного цикла for только без масивов пожалуйста пользователь вводит числа, необходимо вводить числа до тех пор, пока сумма чётных или нечётных станет больше 100, и среднее арифметическое чётных станет больше произведения чисел кратных четырём http://www.cyberforum.ru/cpp-beginners/thread613862.html
Разработать структуру с именем NOTE C++
Задание 1: Подсчитать количество прописных букв в строке. Задание 2: Разработать структуру с именем NOTE, содержащую поля: • Фамилия, имя; • Номер телефона; • Дата рождения (массив их трёх чисел для хранения даты, месяца и го- да) Разработать структуру с именем NOTE, содержащую поля: • Фамилия, имя; • Номер телефона; • Дата рождения (массив их трёх чисел для хранения даты, месяца и го-
Строки и файлы C++
Нужно написать программу которая считывает текст из файла и выводит на экран сначала предложения,начинающиеся с однобуквенных слов,а затем все остальное. Полазил по форуму нашел сходную прогу,но мне нужно чтобы текст считывался с файла,а там он самого кода программы считывается. #include <iostream> #include <conio.h> #include <string.h> using namespace std; int main()
C++ Работа с диагоналями в массиве http://www.cyberforum.ru/cpp-beginners/thread613841.html
ребят помогите найти манимальный элемент и максимальный . вот условие: Задан двумерный динамический массив размером NxM. Найти минимальный среди элементов. лежащих выше побочной оси, и максимальный среди элементов, лежащих ниже главной оси.
C++ Двумерный массив заполняется слева направо и сверху вниз Напишите программу, в которой двумерный массив 5х5 заполняется слева направо и сверху вниз возрастающими нечетными числами от 1 до 49. Результат вывести на экран в виде таблицы. подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
27.06.2012, 23:50     Как сделать такое окно
Можно ли сделать так.что бы 1 строка - 1 вывод сообщения,сразу с цветом и смещением(которое приходиться прописывать руками?)
Для этого нужно использовать ООП, обернув строку в класс.

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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
// Console.cpp
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#define COLOR_WINDOWTEXT        8
#define COLOR_BACKGROUND        1
#define COLOR_WINDOW            5
#define COLOR_WINDOWFRAME       6
#define X            5
#define Y            5
#ifndef WM_MOUSEWHEEL
#define WM_MOUSEWHEEL 0x020A
#endif
 
class SText
{
public:
TCHAR* str;
 
SText(HDC hdc, DWORD rgb, int x, int y, TCHAR* a)
{
str = a;
Draw(hdc, rgb, x, y);
}
 
void Draw(HDC hdc, DWORD rgb, int x, int y)
{
SetBkMode(hdc,TRANSPARENT);
SetTextColor(hdc,rgb);
TextOut(hdc, x, y, str, _tcslen(str));
}
};
 
// Глобальные переменные
 
 
// Имя класса окна.
static TCHAR szWindowClass[] = _T("ConsoleAPI");
 
// Строка, которая появляется в строке заголовка приложения.
static TCHAR szTitle[] = _T("Console");
 
HINSTANCE hInst;
 
// Forward declarations of functions included in this code module:
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    // адрес ф-ции обработки сообщений
    wcex.lpfnWndProc    = WndProc;
    // стиль окна
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    // стиль окна
    wcex.hInstance      = hInstance;
    //пиктограмма приложения
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE
 
(IDI_APPLICATION));
    // загрузка курсора
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    // загрузка цвета окон
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+2);
    wcex.lpszMenuName   = NULL;
    // название класса
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE
 
(IDI_APPLICATION));
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Ошибка регестрации окна!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    hInst = hInstance;
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        800, 600,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Ошибка вызова CreateWindow."),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    // Параметры ShowWindow обьяснение:
    // hWnd: Значение, возвращаемое CreateWindow
    // nCmdShow: Четвертый параметр из WinMain
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    // Главный цикл обработки сообщений:
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
}
 
//
//  ФУНКЦИИ: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  ЦЕЛИ:  Processes messages for the main window.
//
//  WM_PAINT    - Отрисовка в окне
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM 
 
lParam)
{
    PAINTSTRUCT ps;
    //Параметры шрифта.
    LOGFONT font;
    font.lfHeight =  15 ;// Устанавливает высоту шрифта или символа
    font.lfWidth =  0;// Устанавливает среднюю ширину символов в шрифте
    font.lfEscapement = 0;// Устанавливает угол, между вектором наклона 
 
и осью X устройства
    font.lfOrientation = 0;// Устанавливает угол, между основной линией 
 
каждого символа и осью X устройства
    font.lfWeight = 300;// Устанавливает толщину шрифта в диапазоне от 
 
0 до 1000
    font.lfItalic = 0;// Устанавливает курсивный шрифт
    font.lfUnderline = 0;// Устанавливает подчеркнутый шрифт
    font.lfStrikeOut = 0;// Устанавливает зачеркнутый шрифт
    font.lfCharSet = RUSSIAN_CHARSET;// Устанавливает набор символов
    font.lfOutPrecision = 0;// Устанавливает точность вывода
    font.lfClipPrecision = 0;// Устанавливает точность отсечения
    font.lfQuality = 0;// Устанавливает качество вывода
    font.lfPitchAndFamily = 0;// Устанавливает ширину символов и 
 
семейство шрифта
    //strcpy(font.lfFaceName , "VERDANA");//  устанавливает название 
 
шрифта
    //Отключил.
 
    HFONT hfont;
    hfont = ::CreateFontIndirect(&font);
    HDC hdc; /* ссылка на контекст устройства
   Будьте внимательны! Этот контекст устройства мы получаем только на 
 
момент вызовов
   BeginPaint и EndPaint, после чего он освобождается (после обработки 
 
WM_PAINT).
   Контекст устройства в WinMain освобождается только перед завершением 
 
программы.
   Обе переменные ссылаются на один и тот же контекст устройства окна и 
 
носят одинаковое
   имя, но фактически это разные контексты устройства.*/
   static HPEN pen = NULL;
   static HBRUSH brush = NULL;
   static RECT rect = {0L};
   SCROLLINFO sinfo;
   PAINTSTRUCT paint;
   HGDIOBJ old1, old2;
   int off, tmp;
    //Описание сообщений
        TCHAR test[] = _T("Тестовое сообщение.");
        TCHAR Error[] = _T("Ошибка!");
        TCHAR VersionCore[] = _T("Версия ядра :");
        TCHAR VersionLua[] = _T("Версия Lua :");
        TCHAR FuncNotFound[] = _T("Функция не найдена!");
        TCHAR NotFound[] = _T("NotFound!");
    
    
    // обрабатываем сообщения
         // выборка и обработка сообщений
    switch (message)
    {
    case WM_PAINT:
 
        hdc = BeginPaint(hWnd, &ps);
        old1 = SelectObject(hdc, pen);
        old2 = SelectObject(hdc, brush);
        SelectObject(ps.hdc,hfont);
    {
        SText a(hdc, RGB(0, 255, 0), X, Y+200, "SText test");
    }
        SetBkMode(hdc,TRANSPARENT);
        SetTextColor(hdc,RGB(0, 255, 0));
        TextOut(hdc, X, Y, test, _tcslen(test));
        SetTextColor(hdc,RGB(255, 0, 0));
        TextOut(hdc, X, Y+15, Error, _tcslen(Error));
        SetTextColor(hdc,RGB(0, 0, 255));
        TextOut(hdc, X, Y+15+15, VersionCore, _tcslen(VersionCore));
        EndPaint(hWnd, &ps);
        break;
        off = GetScrollPos(hWnd, SB_VERT);
           // вот этот примитив будет подчинятся верт-скроллу
           RoundRect(hdc, rect.left, rect.top - off, rect.right, 
 
rect.bottom - off, 180, 180);
 
           SelectObject(hdc, old1);
           SelectObject(hdc, old2);
           EndPaint(hWnd, &paint);
           break;
      case WM_VSCROLL:
           sinfo.cbSize = sizeof(SCROLLINFO);
           sinfo.fMask = SIF_ALL;
           GetScrollInfo(hWnd, SB_VERT, &sinfo);
           off = sinfo.nPos;
           sinfo.fMask = SIF_POS;
 
           switch(LOWORD(wParam)) {
                case SB_THUMBTRACK:
                    sinfo.nPos = sinfo.nTrackPos;
                    break;
                case SB_LINEUP:
                    sinfo.nPos -= 2;
                    break;
                case SB_LINEDOWN:
                    sinfo.nPos += 2;
                    break;
           }
           SetScrollInfo(hWnd, SB_VERT, &sinfo, TRUE);
           tmp = GetScrollPos(hWnd, SB_VERT);
           if(off != tmp) {
                ScrollWindow(hWnd, 0, off - tmp, NULL, NULL);
                UpdateWindow(hWnd);
           }
           break;
      case WM_MOUSEWHEEL: // прокручивание-скролла колёсиком-мышки
           tmp = off = GetScrollPos(hWnd, SB_VERT);
           off = (HIWORD(wParam) == 0x78) ? off-8 : off+8;
           SetScrollPos(hWnd, SB_VERT, off, TRUE);
           off = GetScrollPos(hWnd, SB_VERT);
           if(tmp != off) {
                ScrollWindow(hWnd, 0, tmp - off, NULL, NULL);
                UpdateWindow(hWnd);
           }
           break;
      case WM_SIZE: 
           sinfo.cbSize = sizeof(SCROLLINFO); 
           sinfo.fMask = SIF_RANGE | SIF_PAGE; 
           sinfo.nMin = 0; 
           sinfo.nMax = rect.bottom;
           sinfo.nPage = HIWORD(lParam); 
           SetScrollInfo(hWnd, SB_VERT, &sinfo, TRUE); 
           break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        // обработка сообщений "по умолчанию"
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru