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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
lesat
0 / 0 / 0
Регистрация: 28.04.2010
Сообщений: 5
#1

GUI C++ - C++

28.04.2010, 22:18. Просмотров 3284. Ответов 8
Метки нет (Все метки)

Создать класс ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхнего угла, размер по горизонтали, размер по вертикали, цвет окна, состояние «видимое/невидимое», состояние «с рамкой/без рамки». Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали, по вертикали; изменение высоты и/или ширины окна изменение цвета; изменение состояния, опрос состояния. Операции передвижения и изменения размера должны осуществлять проверку на пересечение границ экрана. Функция вывода на экран должна индуцировать состояние полей объекта.

Не могу справиться с задачей, помогите пожалуйста, код нужен, а я в этом не особо понимаю((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2010, 22:18     GUI C++
Посмотрите здесь:

Изучение C++ и GUI - C++
Поставил перед собой задачу выучить c++. Подскажите что можно почитать о написании независимых программ от .Net с использованием Windows...

GUI в разных ОС - C++
что такое win32 gui?mfc?

MS VC++ WinApi GUI - C++
Добрый вечер. У меня задание, сделать окно с меню, такого вида: В меню colors - red, green, white; В меню Size - x2,x3; Все...

создание GUI на C - C++
Гуглил не чё не нашёл(. У меня стоит Linux с Gnome. Где можно подчерпнуть информации по созданию GUI на C под линух?

HTML GUI - C++
Есть окно графическая часть на которого реализована на HTML GUI. Может ли кто-то подсказать, как найти програмно элементы управления и...

Создание GUI на C++ - C++
Всем привет! Вот передо мной встал такой вопрос: в чем сейчас разрабатывают GUI на C++? Всем известно WinAPI, но как бы это сказать, оно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hell Knight
230 / 84 / 3
Регистрация: 11.03.2010
Сообщений: 290
28.04.2010, 22:31     GUI C++ #2
я как понял тебе нужно это:
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
#include <windows.h>
 
LRESULT CALLBACK MainWinProc (HWND hwnd,
                              UINT msg,
                              WPARAM wparam,
                              LPARAM lparam)
{
    switch(msg)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return (0);
        } break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}
 
int WINAPI WinMain( HINSTANCE   hinstance,
                    HINSTANCE   hprevinstance,
                    LPSTR       lpcmdline,
                    int         ncmdshow)
{
WNDCLASSEX windowsclass;
HWND        hwnd;
MSG         msg;
// оперделяем класс окна WINDCLASSEX
windowsclass.cbSize = sizeof(WNDCLASSEX);
windowsclass.style = CS_VREDRAW|CS_HREDRAW|CS_OWNDC|CS_DBLCLKS;
windowsclass.lpfnWndProc = MainWinProc;
windowsclass.cbClsExtra = 0;
windowsclass.cbWndExtra = 0;
windowsclass.hInstance = hinstance;
windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName = NULL;
windowsclass.lpszClassName = "WINDOWSCLASS";
windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// зарегестрируем класс
if (!RegisterClassEx(&windowsclass))
return(0);
// можно создать окно
if (!(hwnd = CreateWindowEx(NULL,
    "WINDOWSCLASS",
    "Title window",
    WS_OVERLAPPEDWINDOW|WS_VISIBLE,
    0, 0,
    500, 400,
    NULL,
    NULL,
    hinstance,
    NULL)))
return(0);
 
    ShowWindow(hwnd, SW_SHOWDEFAULT);
    UpdateWindow(hwnd);
    ZeroMemory(&msg, sizeof(msg));
    while (msg.message != WM_QUIT)
    {
        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
return 0;
}
Добавлено через 1 минуту
здесь как бы не трудно дописать функции, которые будут что либо менять...
lesat
0 / 0 / 0
Регистрация: 28.04.2010
Сообщений: 5
28.04.2010, 23:03  [ТС]     GUI C++ #3
Спасибо за основу кода, но я в этом вообще не шарю, точнее только начал сам для себя разбираться, и не особо понял, где и на какие функции надо менять

Добавлено через 25 минут
Можете помочь с самим кодом полностью? Пожалуйста..
Hell Knight
230 / 84 / 3
Регистрация: 11.03.2010
Сообщений: 290
28.04.2010, 23:05     GUI C++ #4
окей!
вот я добавил перемещение окна:
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
LRESULT CALLBACK MainWinProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    RECT rect;
    switch(msg)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return (0);
        } 
        break;
        case WM_KEYDOWN:
            GetWindowRect(hwnd, &rect);
            if(wparam == 0x25) // влево
                SetWindowPos(hwnd, HWND_TOP, rect.left - STEP, rect.top, rect.right, rect.bottom, SWP_NOSIZE);
            if(wparam == 0x26) // вверх
                SetWindowPos(hwnd, HWND_TOP, rect.left, rect.top - STEP, rect.right, rect.bottom, SWP_NOSIZE);
            if(wparam == 0x27) // вправо
                SetWindowPos(hwnd, HWND_TOP, rect.left + STEP, rect.top, rect.right, rect.bottom, SWP_NOSIZE);
            if(wparam == 0x28) // вниз
                SetWindowPos(hwnd, HWND_TOP, rect.left, rect.top + STEP, rect.right, rect.bottom, SWP_NOSIZE);
            break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}
lesat
0 / 0 / 0
Регистрация: 28.04.2010
Сообщений: 5
28.04.2010, 23:22  [ТС]     GUI C++ #5
STEP was not declared, но это я исправлю
а как сделать остальное?
Hell Knight
230 / 84 / 3
Регистрация: 11.03.2010
Сообщений: 290
28.04.2010, 23:45     GUI C++ #6
забыл сказать, что:
C++
1
#define STEP 10
над остальным думаю, как лучше сделать))
в процессе...

Добавлено через 19 минут
вот модифицировал...
оптимизировал код и добавил возможность изменения размера окна:
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
#define STEP 10
// глобальные переменные (размеры окна)
int width = 500;
int height = 400;
 
LRESULT CALLBACK MainWinProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    RECT rect;
    switch(msg)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return (0);
        } 
        break;
        case WM_KEYDOWN:
            GetWindowRect(hwnd, &rect);
            // перемещение
            if(wparam == 0x25) // влево
                rect.left -=STEP;
            if(wparam == 0x26) // вверх
                rect.top -= STEP;
            if(wparam == 0x27) // вправо
                rect.left +=STEP;
            if(wparam == 0x28) // вниз
                rect.top += STEP;
 
            // размер
            if(wparam == 0x64) // NumPad4
                width -= STEP;
            if(wparam == 0x66) // NumPad6
                width += STEP;
            if(wparam == 0x68) // NumPad8
                height -= STEP;
            if(wparam == 0x62) // NumPad2
                height += STEP;
 
            if (width <= 120) width = 120;
            if (height <= 30) height = 30;
 
            SetWindowPos(hwnd, HWND_TOP, rect.left, rect.top, width, height, NULL);
            break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}
lesat
0 / 0 / 0
Регистрация: 28.04.2010
Сообщений: 5
28.04.2010, 23:55  [ТС]     GUI C++ #7
Если я правильно разобрался, на цвет, видимость/невидимость и с рамкой/без рамки уже есть...
а изменение и опрос состояния? чувствую себя дятлом, но сам не смог написать, изучаю все по Вашему коду
Hell Knight
230 / 84 / 3
Регистрация: 11.03.2010
Сообщений: 290
29.04.2010, 00:06     GUI C++ #8
всё на самом деле довольно таки просто...
Цитата Сообщение от lesat Посмотреть сообщение
Если я правильно разобрался, на цвет, видимость/невидимость и с рамкой/без рамки уже есть...
вообще существуют winApi функции, которые это делают.
Вам только остается добавить их в нужное место в своем проекте...
принцип такой:
1) открываете справочник winApi-функций, например MSDN рекомендую...
2) ищите нужную вам функцию или подбираете, смотрите какая что делает и выбираете что вам нужно...
3) изучаете какие ей нужны параметры
4) смотрите какую библиотеку нужно подключить
5) включаете всё это в свой проект и вуаля)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2010, 00:21     GUI C++
Еще ссылки по теме:

Литература по GUI C++ - C++
Добрый вечер, ув. форумчане! Недавно дали тему по курсовой работе &quot;создание прототипа САПР (система автоматизированного проектирования)&quot;....

красивый GUI - C++
Привет. Я опять с глупым вопросом :) Как сделать красивый ГУИ? Например как на изображениях ниже. На C++ естественно. Qt? Или что? И нет ли...

Шахматный GUI - C++
Добрый день комрады. Дело вот в чем, написал я для курсовой консольное приложение решающее шахматную задачу на мат в один ход, все работает...

Красивое GUI на с++ - C++
Сегодня задался вопросом,кто как создается красивое гуи на с++?Без использование QT и .NET платформы.


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

Или воспользуйтесь поиском по форуму:
lesat
0 / 0 / 0
Регистрация: 28.04.2010
Сообщений: 5
29.04.2010, 00:21  [ТС]     GUI C++ #9
Спасибо, пойду дальше экспериментировать
Yandex
Объявления
29.04.2010, 00:21     GUI C++
Ответ Создать тему
Опции темы

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